<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1105907257342565894</id><updated>2011-10-26T09:24:15.179-07:00</updated><category term='Html'/><category term='ASP.Net 4.0'/><title type='text'>.Net , Silverlight y más...</title><subtitle type='html'>Un blog con Novedades y ejemplos de .Net y Silverlight</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://davidespinosilverlight.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://davidespinosilverlight.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David Espino</name><uri>http://www.blogger.com/profile/13221720140098487034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_LIdiPgqQZG4/S-RGm5N1djI/AAAAAAAAAAM/6qX3MROAFnw/S220/avatar.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1105907257342565894.post-2680271842073876376</id><published>2011-01-28T10:06:00.000-08:00</published><updated>2011-01-28T10:07:27.834-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Html'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net 4.0'/><title type='text'>Asp.net 4.0: Permitir captura de etiquetas html dentro de un textbox.</title><content type='html'>&lt;style&gt;&lt;!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face {font-family:Cambria; panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4;}@font-face {font-family:Consolas; panose-1:2 11 6 9 2 2 4 3 2 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:0in; line-height:115%; font-size:11.0pt; font-family:"Calibri","sans-serif";}h2 {mso-style-link:"Heading 2 Char"; margin-top:10.0pt; margin-right:0in; margin-bottom:0in; margin-left:0in; margin-bottom:.0001pt; line-height:115%; page-break-after:avoid; font-size:13.0pt; font-family:"Cambria","serif"; color:#4F81BD;}p.MsoAcetate, li.MsoAcetate, div.MsoAcetate {mso-style-link:"Balloon Text Char"; margin:0in; margin-bottom:.0001pt; font-size:8.0pt; font-family:"Tahoma","sans-serif";}span.Heading2Char {mso-style-name:"Heading 2 Char"; mso-style-link:"Heading 2"; font-family:"Cambria","serif"; color:#4F81BD; font-weight:bold;}span.BalloonTextChar {mso-style-name:"Balloon Text Char"; mso-style-link:"Balloon Text"; font-family:"Tahoma","sans-serif";}.MsoChpDefault {font-family:"Calibri","sans-serif";}.MsoPapDefault {margin-bottom:10.0pt; line-height:115%;}@page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in;}div.WordSection1 {page:WordSection1;}--&gt;&lt;/style&gt;&lt;br /&gt;&lt;div class="WordSection1"&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;En escasas ocasiones dentro de nuestra aplicación web es necesario permitir que el usuario ingrese cierto contenido con un formato de html. En versiones anteriores esto era posible, y era responsabilidad del programador la validación de dichas etiquetas para evitar que un usuario introdujera código malicioso a nuestra aplicación.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Con ASP.net 4.0 ahora&amp;nbsp; la validación es de manera automática. Si un usuario intenta agregar etiquetas de html una aplicación web, el resultado es una excepción. Esta validación automática puede ser desactivada mediante una sencilla instrucción del archivo de web.config.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Lo primero que hay que hacer es dentro de Visual Studio 2010 vamos a crear una nueva aplicación web. Agregamos una forma web nueva y vamos a crear controles básicos que permitan capturar etiquetas de html y un botón que provoque un postback de nuestra página.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon; font-family: Consolas; font-size: 9.5pt;"&gt;asp&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;:&lt;/span&gt;&lt;span style="color: maroon; font-family: Consolas; font-size: 9.5pt;"&gt;TextBox&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;="txtComments"&lt;/span&gt;&lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&lt;/span&gt;&lt;span style="color: red;"&gt;Rows&lt;/span&gt;&lt;span style="color: blue;"&gt;="4"&lt;/span&gt;&lt;span style="color: red;"&gt;TextMode&lt;/span&gt;&lt;span style="color: blue;"&gt;="MultiLine"&lt;/span&gt;&lt;span style="color: red;"&gt;ClientIDMode&lt;/span&gt;&lt;span style="color: blue;"&gt;="Static"&lt;/span&gt;&lt;span style="color: red;"&gt;Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="400px"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: maroon;"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: maroon;"&gt;Button&lt;/span&gt; &lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;="btnInsertScript"&lt;/span&gt;&lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&lt;/span&gt;&lt;span style="color: red;"&gt;Text&lt;/span&gt;&lt;span style="color: blue;"&gt;="Insert&lt;br /&gt;Inline"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="color: red;"&gt;onclick&lt;/span&gt;&lt;span style="color: blue;"&gt;="btnInsertScript_Click"&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;En el codeBehind de nuestra página podemos comprobar que el html en realidad se capture y se pinte de manera correcta&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;htmlCode = &lt;span style="color: #2b91af;"&gt;HttpUtility&lt;/span&gt;.HtmlEncode(txtComments.Text);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;Response.Write(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.txtComments.Text);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Al correr la aplicación y capturar un html dentro de ese textbox, y debido a que aún cambiamos el modo de validación dentro del web config, obtenemos la siguiente excepción.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_LIdiPgqQZG4/TUMEpvbMvxI/AAAAAAAAABs/_DGiXEuJQ5o/s1600/Exception.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="250" width="480" src="http://4.bp.blogspot.com/_LIdiPgqQZG4/TUMEpvbMvxI/AAAAAAAAABs/_DGiXEuJQ5o/s320/Exception.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Es importante mencionar que esta excepción ocurre dentro del HttpRequest, es decir, aun cuando nuestro código esté preparado para el manejo de excepciones con un try catch, este error ocurre antes de ejecutar cualquier código de nuestra página, incluso el Load. Si se quiere manipular esta excepción de manera personalizada, debe hacerse dentro del Archivo Global.asax.cs en el método Application_Error&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;void&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;Application_Error(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: green;"&gt;// Code that runs when an unhandled error occurs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt;"&gt;Response.Redirect(&lt;span style="color: #a31515;"&gt;"ErrorPage.htm"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Este manejo de excepciones controlará cualquier excepción que no sea correctamente manipulada correctamente en la aplicación.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span lang="ES-MX"&gt;Si queremos que esta validación automática sea deshabilitada para permitir el ingreso de html dentro de nuestro textbox, es necesario agregar la siguiente etiqueta dentro del nodo&lt;/span&gt;&lt;span lang="ES-MX" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="ES-MX" style="color: #a31515; font-family: Consolas; font-size: 9.5pt;"&gt;system.web&lt;/span&gt;&lt;span lang="ES-MX" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;gt; &lt;/span&gt;&lt;span lang="ES-MX"&gt;en el archivo Web.config:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 9.5pt;"&gt;httpRuntime&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="color: red; font-family: Consolas; font-size: 9.5pt;"&gt;requestValidationMode&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;"&lt;span style="color: blue;"&gt;2.0&lt;/span&gt;"&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span lang="ES-MX"&gt;Esto deshabilitará la validación y permitirá la captura de html :&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_LIdiPgqQZG4/TUMFWZjJIDI/AAAAAAAAAB0/jud6qKWp2Zk/s1600/app.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="110" width="430" src="http://4.bp.blogspot.com/_LIdiPgqQZG4/TUMFWZjJIDI/AAAAAAAAAB0/jud6qKWp2Zk/s320/app.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;&amp;nbsp;&lt;b&gt;Nota importante: &lt;/b&gt;Esta es una manera de permitir que el usuario ingrese etiquetas de html dentro de nuestra aplicación. Sin embargo, nunca debe confiarse en cualquier texto capturado  por un usuario, pues puede contener código malicioso que pueda provocar fallas en nuestra aplicación. Lo más conveniente es que cuando se va a devolver &amp;nbsp;un texto capturado hacia la interfaz de usuario, siempre utilizar el método HtmlEncode:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 115%;"&gt;HttpUtility&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%;"&gt;.HtmlEncode(txtComments.Text);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;De esta manera todos las etiquetas de html serán rendereados completamente en la pantalla y no interpretados por el navegador.&lt;br /&gt;Si se desea desplegar el html que el usuario ingresa, es mejor utilizar controles de Edición específicos para ello, o bien controlar de manera adecuada el código en el cual se inyectara dicho HTML.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1105907257342565894-2680271842073876376?l=davidespinosilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidespinosilverlight.blogspot.com/feeds/2680271842073876376/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://davidespinosilverlight.blogspot.com/2011/01/aspnet-40.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/2680271842073876376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/2680271842073876376'/><link rel='alternate' type='text/html' href='http://davidespinosilverlight.blogspot.com/2011/01/aspnet-40.html' title='Asp.net 4.0: Permitir captura de etiquetas html dentro de un textbox.'/><author><name>David Espino</name><uri>http://www.blogger.com/profile/13221720140098487034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_LIdiPgqQZG4/S-RGm5N1djI/AAAAAAAAAAM/6qX3MROAFnw/S220/avatar.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LIdiPgqQZG4/TUMEpvbMvxI/AAAAAAAAABs/_DGiXEuJQ5o/s72-c/Exception.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1105907257342565894.post-8288206334260127888</id><published>2010-06-08T15:43:00.000-07:00</published><updated>2010-06-08T15:49:14.357-07:00</updated><title type='text'>Temas Dinámicos en Silverlight 3.0</title><content type='html'>&lt;div class="Section1"&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Cuando creamos una aplicación Silverlight es común que queramos aplicar diferentes Temas a nuestra aplicación para que los colores y efectos sean personalizables. El Silverlight Toolkit de CodePlex nos permite hacer esto de manera sencilla. &lt;/span&gt;Para este ejemplo requieres los siguientes prerrequisitos.&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;Silverlight 3.0.&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;span lang="ES-MX" style="font-family: Symbol;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Silverlight Toolkit. &lt;span lang="ES-MX"&gt;Puedes descargarlo de este enlace &lt;/span&gt;&lt;a href="http://silverlight.codeplex.com/Wikipage"&gt;&lt;span lang="ES-MX"&gt;http://silverlight.codeplex.com/Wikipage&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Visual Studio 2008.&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;"&gt;&lt;span lang="ES-MX" style="font-family: Symbol;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Expression Blend 3.0. &lt;span lang="ES-MX"&gt;Esta herramienta no se require realmente, pero se recomienda utilizar Blend cuando se va a realizar algún diseño de Interfaz de usuario, es más sencillo y más rápido que en Visual estudio para dichas actividades.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Primero que nada es necesario crear una aplicación Silverlight con su respectivo Website.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_LIdiPgqQZG4/TA7If8vIUFI/AAAAAAAAAAw/zBSrJj7wSgM/s1600/image001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" qu="true" src="http://4.bp.blogspot.com/_LIdiPgqQZG4/TA7If8vIUFI/AAAAAAAAAAw/zBSrJj7wSgM/s320/image001.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;A continuación, hay que agregar algunos controles a los que se les desea aplicar el tema. Para este ejemplo se agregan algunos TextBox , algunos TextBlocks y un botón. A continuación se muestra el Xaml creado.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_LIdiPgqQZG4/TA7Im_zNDkI/AAAAAAAAAA4/Wk_WZ67GVMA/s1600/image002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" qu="true" src="http://1.bp.blogspot.com/_LIdiPgqQZG4/TA7Im_zNDkI/AAAAAAAAAA4/Wk_WZ67GVMA/s320/image002.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;La linea más importante es:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_LIdiPgqQZG4/TA7IrlQJxkI/AAAAAAAAABA/cdSqfHAe2hU/s1600/image003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" qu="true" src="http://4.bp.blogspot.com/_LIdiPgqQZG4/TA7IrlQJxkI/AAAAAAAAABA/cdSqfHAe2hU/s320/image003.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Con esta linea estamos indicando al plugin de Silverlight que usaremos la dll Theming.dll que forma parte del Silverlight Toolkit. Esto no funciona si no se agregan las referencias correspondientes, así que hay que agregar la referencia a la dll &lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;System.Windows.Controls.Theming.Toolkit.dll.&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Para ello, es necesario buscarla en el path C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Toolkit\Nov09\Themes\Xaml (Toma en cuenta tu versión de SO por si el path pudiera cambiar). Este es el path de instalación por defecto del Silverlight Toolkit en Windows 7 a 32 bits. Luego hay que copiar 2 archivos de Tema (o más si así lo decides) al directorio raíz de la aplicación. Personalmente copié los siguientes:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;System.Windows.Controls.Theming.BubbleCreme.xaml&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;System.Windows.Controls.Theming.BureauBlue.xaml&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Ahora es necesario utilizar el siguiente código para hacer el cambio de temas:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;private&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt; void&lt;/span&gt; UserControl_Loaded(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, System.Windows.&lt;span style="color: #2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;span style="color: green;"&gt;// TODO: Add event handler implementation here.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt; uri = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;@"SLTheming;component/System.Windows.Controls.Theming.BureauBlue.xaml"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;UriKind&lt;/span&gt;.Relative); &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;ImplicitStyleManager&lt;/span&gt;.SetResourceDictionaryUri(LayoutRoot, uri);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;ImplicitStyleManager&lt;/span&gt;.SetApplyMode(LayoutRoot, &lt;span style="color: #2b91af;"&gt;ImplicitStylesApplyMode&lt;/span&gt;.Auto);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;ImplicitStyleManager&lt;/span&gt;.Apply(LayoutRoot);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, System.Windows.&lt;span style="color: #2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt; uri = &lt;span tyle="color:blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;@"SLTheming;component/System.Windows.Controls.Theming.BubbleCreme.xaml"&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;UriKind&lt;/span&gt;.Relative);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;ImplicitStyleManager&lt;/span&gt;.SetResourceDictionaryUri(LayoutRoot, uri);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;ImplicitStyleManager&lt;/span&gt;.SetApplyMode(LayoutRoot, &lt;span style="color: #2b91af;"&gt;ImplicitStylesApplyMode&lt;/span&gt;.Auto);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;span style="color: #2b91af;"&gt;ImplicitStyleManager&lt;/span&gt;.Apply(LayoutRoot);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Con éste código, solo hay que iniciar la aplicación con el Website correspondiente y presionar el botón para revisar&lt;br /&gt;cómo el Website cambia de esta apariencia:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_LIdiPgqQZG4/TA7IyIiJKDI/AAAAAAAAABI/4XcPi5y8tg4/s1600/image004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" qu="true" src="http://2.bp.blogspot.com/_LIdiPgqQZG4/TA7IyIiJKDI/AAAAAAAAABI/4XcPi5y8tg4/s320/image004.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;A esta:&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_LIdiPgqQZG4/TA7I16lurLI/AAAAAAAAABQ/Iggl-VZJyhw/s1600/image005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" qu="true" src="http://2.bp.blogspot.com/_LIdiPgqQZG4/TA7I16lurLI/AAAAAAAAABQ/Iggl-VZJyhw/s320/image005.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1105907257342565894-8288206334260127888?l=davidespinosilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidespinosilverlight.blogspot.com/feeds/8288206334260127888/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://davidespinosilverlight.blogspot.com/2010/06/temas-dinamicos-en-silverlight-30.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/8288206334260127888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/8288206334260127888'/><link rel='alternate' type='text/html' href='http://davidespinosilverlight.blogspot.com/2010/06/temas-dinamicos-en-silverlight-30.html' title='Temas Dinámicos en Silverlight 3.0'/><author><name>David Espino</name><uri>http://www.blogger.com/profile/13221720140098487034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_LIdiPgqQZG4/S-RGm5N1djI/AAAAAAAAAAM/6qX3MROAFnw/S220/avatar.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LIdiPgqQZG4/TA7If8vIUFI/AAAAAAAAAAw/zBSrJj7wSgM/s72-c/image001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1105907257342565894.post-359414391439228887</id><published>2010-05-20T11:47:00.000-07:00</published><updated>2010-05-20T11:59:30.864-07:00</updated><title type='text'>Compartiendo información entre Aplicaciones Silverlight</title><content type='html'>&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:160%'&gt;&lt;span lang=ES-MX style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt;Dentro de una solución dentro de cuya arquitectura se utilicen aplicaciones &lt;span class=SpellE&gt;Silverlight&lt;/span&gt;, puede ser bastante útil el pasar información de un .XAP a otro a manera de estado, o como parámetros o banderas para ejecutar tal o cual acción. Esta funcionalidad se logra con &lt;span class=SpellE&gt;&lt;b&gt;Isolated&lt;/b&gt;&lt;/span&gt;&lt;b&gt; Storage&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;&lt;b&gt;Isolated&lt;/b&gt;&lt;/span&gt;&lt;b&gt; Storage&lt;/b&gt; funciona de manera similar a las cookies dentro de un cliente que explora una página web, es decir, crea archivos dentro de la máquina cliente que accede a la aplicación, y puede utilizarse para guardar el estado de una aplicación o bien, para pasar grandes cantidades de información, siempre y cuando el cliente permita crear archivos de gran dimensión. Estos son los principales puntos sobre el manejo de &lt;span class=SpellE&gt;Isolated&lt;/span&gt; &lt;span class=SpellE&gt;storage&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;• La forma en que &lt;span class=SpellE&gt;Silverlight&lt;/span&gt; 2 maneja &lt;spanclass=SpellE&gt;Isolated&lt;/span&gt; Storage es a través de archivos que se guardan en la máquina del cliente de acuerdo a su sistema operativo. &lt;/span&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri; mso-bidi-theme-font:minor-latin;color:#333333'&gt;Las &lt;span class=SpellE&gt;ubicaciones&lt;/span&gt; son &lt;span class=SpellE&gt;las&lt;/span&gt; &lt;span class=SpellE&gt;siguientes&lt;/span&gt;: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=1 cellpadding=0&gt;&lt;tr &gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span class=SpellE&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;Sistema&lt;/span&gt;&lt;/span&gt;&lt;span  style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;  mso-bidi-theme-font:minor-latin;color:#333333'&gt; &lt;span class=SpellE&gt;Operativo&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span class=SpellE&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;Ubicación&lt;/span&gt;&lt;/span&gt;&lt;span  style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;  mso-bidi-theme-font:minor-latin;color:#333333'&gt; &lt;span class=SpellE&gt;Física&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr &gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:  Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;Windows Vista&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:  Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;&amp;lt;SYSTEMDRIVE&amp;gt;\Users\&amp;lt;user&amp;gt;\AppData\LocalLow\Microsoft\Silverlight\is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr &gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:  Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;Windows XP&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:  Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;&amp;lt;SYSTEMDRIVE&amp;gt;\Documents and Settings\&amp;lt;user&amp;gt;\Local Settings\Application Data\Microsoft\Silverlight\is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr &gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:  Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;MAC OS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;   &lt;td &gt;&lt;br /&gt;&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:  normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:  Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;/Users/&amp;lt;user&amp;gt;/Library/Application Support/Microsoft/Silverlight/is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=MsoNormal&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang=ES-MX style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt;• El &lt;span class=SpellE&gt;Isolated&lt;/span&gt; Storage se basa en la identidad del usuario y de la aplicación, o bien de la identidad del usuario y la identidad de la aplicación.&lt;br /&gt;&lt;br /&gt;• Cada aplicación puede guardar su propio &lt;span class=SpellE&gt;Isolated&lt;/span&gt; Storage, el cual es visible solo para esa aplicación mientras se esté ejecutando (o mientras no lo eliminen de la ruta física).&lt;br /&gt;&lt;br /&gt;• Todas las aplicaciones de un mismo sitio tienen un &lt;span class=SpellE&gt;Isolated&lt;/span&gt; Storage común, el cual es visible para todas las aplicaciones del mismo sitio. La forma de grabar a este Storage es mediante el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=SpellE&gt;&lt;span lang=ES-MX style='font-size:10.0pt;line-height:115%;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt;using&lt;/span&gt;&lt;/span&gt;&lt;spanlang=ES-MX style='font-size:10.0pt;line-height:115%;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt; (&lt;span class=SpellE&gt;var&lt;/span&gt; &lt;spanclass=SpellE&gt;store&lt;/span&gt; = &lt;span class=SpellE&gt;IsolatedStorageFile.GetUserStoreForSite&lt;/span&gt;())&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;var&lt;/span&gt; &lt;spanclass=SpellE&gt;stream&lt;/span&gt; = &lt;span class=SpellE&gt;store.CreateFile&lt;/span&gt;(&amp;quot;sharedhello.txt&amp;quot;))&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;var&lt;/span&gt; &lt;spanclass=SpellE&gt;writer&lt;/span&gt; = new &lt;span class=SpellE&gt;StreamWriter&lt;/span&gt;(&lt;spanclass=SpellE&gt;stream&lt;/span&gt;)) {&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;writer.Write&lt;/span&gt; (&amp;quot;&lt;span class=SpellE&gt;Hello&lt;/span&gt; &lt;spanclass=SpellE&gt;Shared&lt;/span&gt; &lt;span class=SpellE&gt;World&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang=ES-MX style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt;• La forma de leer de este Storage desde otra&lt;br /&gt;aplicación es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=SpellE&gt;&lt;span lang=ES-MX style='font-size:10.0pt;line-height:115%;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt;using&lt;/span&gt;&lt;/span&gt;&lt;spanlang=ES-MX style='font-size:10.0pt;line-height:115%;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt; (&lt;span class=SpellE&gt;var&lt;/span&gt; &lt;spanclass=SpellE&gt;store&lt;/span&gt; = &lt;span class=SpellE&gt;IsolatedStorageFile.GetUserStoreForSite&lt;/span&gt;())&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;if&lt;/span&gt; (&lt;span class=SpellE&gt;store.FileExists&lt;/span&gt;(&amp;quot;sharedhello.txt&amp;quot;))&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;var&lt;/span&gt; &lt;spanclass=SpellE&gt;stream&lt;/span&gt; = &lt;span class=SpellE&gt;store.OpenFile&lt;/span&gt;(&amp;quot;sharedhello.txt&amp;quot;,&lt;br /&gt;&lt;span class=SpellE&gt;FileMode.Open&lt;/span&gt;))&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;var&lt;/span&gt; &lt;spanclass=SpellE&gt;reader&lt;/span&gt; = new &lt;span class=SpellE&gt;StreamReader&lt;/span&gt;(&lt;spanclass=SpellE&gt;stream&lt;/span&gt;)) {&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;contents&lt;/span&gt; = &lt;spanclass=SpellE&gt;reader.ReadToEnd&lt;/span&gt;(); // &amp;quot;&lt;span class=SpellE&gt;Hello&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;Shared&lt;/span&gt; &lt;span class=SpellE&gt;World&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang=ES-MX style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333;mso-ansi-language:ES-MX'&gt;• El &lt;span class=SpellE&gt;Isolated&lt;/span&gt; Storage es&lt;br /&gt;medido en &lt;span class=SpellE&gt;Quotas&lt;/span&gt;, que para &lt;span class=SpellE&gt;silverlight&lt;/span&gt; representa la cantidad de espacio físico disponible para este almacenaje. Por default el espacio del &lt;span class=SpellE&gt;Quota&lt;/span&gt; es de 1MB.&lt;br /&gt;&lt;br /&gt;• Es posible solicitar más espacio físico al usuario si así se requiere, pero el código debe dispararse desde un evento disparado por el usuario (un &lt;span class=SpellE&gt;click&lt;/span&gt; de botón) y debe esperar la autorización del usuario.&lt;br /&gt;Esto es que una vez que se ejecuta el código, la aplicación pide permiso al&lt;br /&gt;usuario para incrementar su espacio disponible de almacenaje. &lt;/span&gt;&lt;spanclass=SpellE&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;Esto&lt;/span&gt;&lt;/span&gt;&lt;spanstyle='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt; se &lt;span class=SpellE&gt;hace&lt;/span&gt;&lt;span class=SpellE&gt;mediante&lt;/span&gt; &lt;span class=SpellE&gt;las&lt;/span&gt; &lt;span class=SpellE&gt;siguientes&lt;/span&gt; &lt;span class=SpellE&gt;instrucciones&lt;/span&gt;&lt;span class=GramE&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;line-height:115%;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;color:#333333'&gt;using (&lt;span class=SpellE&gt;var&lt;/span&gt; store = &lt;span class=SpellE&gt;IsolatedStorageFile.GetUserStoreForApplication&lt;/span&gt;())&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;// 5 MB of isolated storage space is needed&lt;br /&gt;&lt;br /&gt;&lt;span class=SpellE&gt;int&lt;/span&gt; &lt;span class=SpellE&gt;spaceNeeded&lt;/span&gt; = 1024 *&lt;br /&gt;1024 * 5;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (&lt;span class=SpellE&gt;store.AvailableFreeSpace&lt;/span&gt; &amp;lt; &lt;span class=SpellE&gt;spaceNeeded&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (&lt;span class=SpellE&gt;store.IncreaseQuotaTo&lt;/span&gt;(&lt;span class=SpellE&gt;store.Quota&lt;/span&gt;&lt;br /&gt;+ &lt;span class=SpellE&gt;spaceNeeded&lt;/span&gt;)) &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;// The user accepted the request&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;span style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1105907257342565894-359414391439228887?l=davidespinosilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidespinosilverlight.blogspot.com/feeds/359414391439228887/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://davidespinosilverlight.blogspot.com/2010/05/compartiendo-informacion-entre.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/359414391439228887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/359414391439228887'/><link rel='alternate' type='text/html' href='http://davidespinosilverlight.blogspot.com/2010/05/compartiendo-informacion-entre.html' title='Compartiendo información entre Aplicaciones Silverlight'/><author><name>David Espino</name><uri>http://www.blogger.com/profile/13221720140098487034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_LIdiPgqQZG4/S-RGm5N1djI/AAAAAAAAAAM/6qX3MROAFnw/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1105907257342565894.post-4269298549190040069</id><published>2010-05-07T16:00:00.000-07:00</published><updated>2010-05-07T16:00:47.304-07:00</updated><title type='text'>Manejo de errores en Silverlight con WCF.</title><content type='html'>&lt;div class="Section1"&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX" style="font-family: Arial, Helvetica, sans-serif; mso-ansi-language: ES-MX;"&gt;Cuando se manda llamar un servicio WCF desde una aplicación &lt;span class="SpellE"&gt;Silverlight &lt;/span&gt;y el servicio arroja un error,&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;el&lt;br /&gt;cliente de &lt;span class="SpellE"&gt;Silverlight&lt;/span&gt; regresa únicamente un error muy genérico:&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;em&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The remote server returned an error: &lt;span class="SpellE"&gt;NotFound&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX" style="font-family: Arial, Helvetica, sans-serif; mso-ansi-language: ES-MX;"&gt;Este mensaje no ayuda en mucho ni al usuario ni al desarrollador para conocer del error, aún más, es necesario por cuestiones de seguridad hacer una división de la información del error: un mensaje amistoso al usuario y un mensaje detallado al administrador del sistema o el desarrollador.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX" style="font-family: Arial, Helvetica, sans-serif; mso-ansi-language: ES-MX;"&gt;La primera parte&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;del error dedicada al administrador de la aplicación consiste en escribir a detalles la excepción que se genera en el código. Hay muchas herramientas que permiten hacer este &lt;span class="SpellE"&gt;loggeo&lt;/span&gt; de errores (Log &lt;span class="SpellE"&gt;for&lt;/span&gt; Net, Microsoft Enterprise Library, entre otros). Para este ejemplo se establece un &lt;span class="SpellE"&gt;loggeo&lt;/span&gt; sencillo&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;al &lt;span class="SpellE"&gt;Application&lt;/span&gt; Log del servidor donde se encontraría nuestro servicio. El método además captura dos parámetros: una “Entidad” que indica la entidad de negocio donde ocurrió el error (como por ejemplo País, Estado, Empleado, &lt;span class="SpellE"&gt;etc&lt;/span&gt;) y una acción, que indica la operación que no pudo ser realizada (Guardar, Seleccionar, Eliminar, &lt;span class="SpellE"&gt;etc&lt;/span&gt;). Con estos dos parámetros podemos entregar un mensaje amistoso que será enviado al usuario.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;class &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;ExceptionLogger&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; &lt;span class="SpellE"&gt;LogAndReturnError&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;Exception &lt;/span&gt;ex, &lt;span style="color: blue;"&gt;string&lt;/span&gt; &lt;span class="SpellE"&gt;entidad&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt; &lt;span class="SpellE"&gt;accion&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;StringBuilder&lt;/span&gt;&lt;/span&gt; &lt;span class="SpellE"&gt;cadenaError &lt;/span&gt;= &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="color: #2b91af;"&gt;StringBuilder&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;);&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;cadenaError.Append&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"Ocurrió un error en el servicio de la aplicación: \n\n&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;cadenaError.Append&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 9.5pt;"&gt;"Error: "&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;cadenaError.Append&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;ex.Message&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;cadenaError.Append&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"\n\&lt;span class="SpellE"&gt;nStackTrace&lt;/span&gt;: \n\n"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;cadenaError.Append&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;ex.StackTrace&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="color: #2b91af;"&gt;EventLog&lt;/span&gt;.WriteEntry&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"&lt;span class="SpellE"&gt;NombreAplicación&lt;/span&gt;"&lt;/span&gt;, &lt;span class="SpellE"&gt;cadenaError.ToString&lt;/span&gt;(), &lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;EventLogEntryType&lt;/span&gt;.Error&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cadenaError = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;StringBuilder&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;cadenaError.Append&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span lang="ES-MX" style="color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;string&lt;/span&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;.Format&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;(&lt;span style="color: #a31515;"&gt;"Ocurrió un error al intentar {0} {1}. Contacte al administrador del sistema."&lt;/span&gt;, &lt;span class="SpellE"&gt;accion&lt;/span&gt;, entidad));&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class="SpellE"&gt;cadenaError.ToString&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX" style="font-family: Arial, Helvetica, sans-serif; mso-ansi-language: ES-MX;"&gt;Lo siguiente es generar una entidad como un &lt;span class="SpellE"&gt;DataContract &lt;/span&gt;para el objeto que almacene los errores que ocurran en el servicio.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;[&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;DataContract&lt;/span&gt;&lt;/span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;ServiceError&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;DataMember&lt;/span&gt;&lt;/span&gt;]&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Type { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;DataMember&lt;/span&gt;&lt;/span&gt;]&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-layout-grid-align: none; text-indent: -0.5in;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Message { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES-MX;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX" style="font-family: Arial, Helvetica, sans-serif; mso-ansi-language: ES-MX;"&gt;Lo que sigue es hacer que nuestras operaciones del servicio puedan arrojar un objeto de error hacia la capa de interfaz. Para ello utilizaremos un parámetro de salida en nuestros métodos de Servicio y utilizaremos la clase de &lt;span class="SpellE"&gt;loggeo&lt;/span&gt; de error.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="SpellE" style="color: #2b91af;"&gt;[OperationContract]&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: #2b91af;"&gt;void &lt;/span&gt;&lt;span class="SpellE"&gt;DoWork&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;string &lt;/span&gt;Parameter1, &lt;span style="color: blue;"&gt;out&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;ServiceError &lt;/span&gt;&lt;/span&gt;&lt;span class="SpellE"&gt;errorService&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;errorService&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//&lt;span class="SpellE"&gt;Operaciones&lt;/span&gt; a &lt;span class="SpellE"&gt;realizar&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; (&lt;span style="color: #2b91af;"&gt;Exception &lt;/span&gt;ex)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;errorService&lt;/span&gt;&lt;/span&gt; = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;ServiceError&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Message = &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="color: #2b91af;"&gt;ExceptionLogger&lt;/span&gt;.LogAndReturnError&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;ex, &lt;span style="color: #a31515;"&gt;"&lt;span class="SpellE"&gt;Acción&lt;/span&gt;"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"&lt;span class="SpellE"&gt;Entidad&lt;/span&gt;"&lt;/span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Type = &lt;span style="color: #a31515;"&gt;"&lt;span class="SpellE"&gt;Aplicación&lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Ahora necesitamos una aplicación &lt;span class="SpellE"&gt;Silverlight&lt;/span&gt; que consuma nuestro servicio. Para ello hay que agregar una aplicación &lt;span class="SpellE"&gt;Silverlight&lt;/span&gt; y agregar una referencia&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;nuestro servicio. Una &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;vez&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt; que llamamos nuestro servicio desde tendríamos lo siguiente:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;"&gt;MyServiceClient&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; client = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;MyServiceClient&lt;/span&gt;&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span class="SpellE"&gt;client.DoWorkCompleted&lt;/span&gt; += &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;&lt;/span&gt;&amp;lt;&lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;DoWorkCompletedEventArgs&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;client_DoWorkCompleted&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;client.DoWorkAsync&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"&lt;span class="SpellE"&gt;Hola &lt;/span&gt;&lt;span class="SpellE"&gt;Mundo&lt;/span&gt;"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span class="SpellE"&gt;client_DoWorkCompleted&lt;/span&gt;(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span class="SpellE"&gt;&lt;span style="color: #2b91af;"&gt;DoWorkCompletedEventArgs&lt;/span&gt;&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-layout-grid-align: none; text-indent: 0.5in;"&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//Error &lt;span class="SpellE"&gt;propio&lt;/span&gt; de WCF&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="SpellE"&gt;e.Error &lt;/span&gt;== &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-layout-grid-align: none; text-indent: 0.5in;"&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//&lt;span class="SpellE"&gt;Nuestro&lt;/span&gt; &lt;span class="SpellE"&gt;Parámetro&lt;/span&gt; de Error!!!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="SpellE"&gt;e.errorService&lt;/span&gt; == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="SpellE"&gt;e.Result&lt;/span&gt; != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-layout-grid-align: none; text-indent: 0.5in;"&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//&lt;span class="SpellE"&gt;Manipular&lt;/span&gt; &lt;span class="SpellE"&gt;resultado&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-layout-grid-align: none; text-indent: 0.5in;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="ES-MX" style="font-family: Arial, Helvetica, sans-serif; mso-ansi-language: ES-MX;"&gt;Esta es una manera sencilla de implementar el manejo de errores en Silverlight.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1105907257342565894-4269298549190040069?l=davidespinosilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidespinosilverlight.blogspot.com/feeds/4269298549190040069/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://davidespinosilverlight.blogspot.com/2010/05/manejo-de-errores-en-silverlight-con.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/4269298549190040069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1105907257342565894/posts/default/4269298549190040069'/><link rel='alternate' type='text/html' href='http://davidespinosilverlight.blogspot.com/2010/05/manejo-de-errores-en-silverlight-con.html' title='Manejo de errores en Silverlight con WCF.'/><author><name>David Espino</name><uri>http://www.blogger.com/profile/13221720140098487034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_LIdiPgqQZG4/S-RGm5N1djI/AAAAAAAAAAM/6qX3MROAFnw/S220/avatar.png'/></author><thr:total>2</thr:total></entry></feed>
