<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://ctorre.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fctorre.spaces.live.com%2fcategory%2fServicios%2bWeb%2bXML%2b(ASMX)%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Blog de CESAR DE LA TORRE: Servicios Web XML (ASMX)</title><description /><link>http://CTORRE.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catServicios%2bWeb%2bXML%2b(ASMX)</link><language>en-US</language><pubDate>Wed, 18 Jun 2008 21:01:15 GMT</pubDate><lastBuildDate>Wed, 18 Jun 2008 21:01:15 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://CTORRE.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-6195401279134465681</live:id><live:alias>CTORRE</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Gestion de Excepciones 'custom' en Servicios Web básicos (ASMX)</title><link>http://CTORRE.spaces.live.com/Blog/cns!AA05835C7C30816F!207.entry</link><description>&lt;div&gt;&lt;font size=3&gt;&lt;font color="#000000"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="font-size:8pt;line-height:115%"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;La gestión de excepciones en Servicios Web básicos (ASMX) no es igual que la &lt;br&gt;gestión de excepciones con objetos en el CLR de .NET. Puesto que no es algo muy, muy sencillo, y me lo ha preguntado mucha gente, voy a escribir un posting sobre ello. &lt;br&gt;Cuando simplemente estás con objetos de .NET (en el CLR), trabajas con &lt;br&gt;objetos &lt;strong&gt;Exception &lt;/strong&gt;y derivados (SqlException, etc.). Sin embargo, para &lt;br&gt;gestionar en la aplicación cliente las excepciones originadas en un Servicio &lt;br&gt;Web básico (ASMX), tienes que trabajar con la clase &lt;strong&gt;'SoapException'&lt;/strong&gt;, con los detalles de la excepción en la propiedad &lt;strong&gt;'Message'&lt;/strong&gt;.&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;El problema viene originado porque sin utilizar la clase SoapException, el diccionario 'Data' y la 'innerException' de una excepción normal de .NET (CLR), no se serializan ni se transmiten por lo tanto a la aplicación cliente que consume el Web Service.&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;Básicamente, como trabajo yo para gestionar las excepciones de servicios Web &lt;br&gt;a las que quiero acceder desde la aplicación cliente (por ejemplo, una &lt;br&gt;excepción de negocio que dependiendo de ciertos valores de la excepción &lt;br&gt;quiero actuar de diferente forma en la aplicación cliente del web service) es: &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;br&gt;&lt;font color="#000000"&gt;&lt;b&gt;(1).- Lanzo la excepción de negocio&lt;/b&gt; o se produce una cualquiera (p.e. &lt;br&gt;SqlException)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;Ejemplo en C# de creación de excepción en método de componente de negocio:&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:green;font-family:'Lucida Console'"&gt;//(CDLTLL)Si no tiene acceso autorizado, lanzamos una excepción de seguridad.&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Lucida Console'"&gt;if&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; (!authorized)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Lucida Console'"&gt;string&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; infoCustom = &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;Lo que quiera poner&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;      &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;ApplicationException&lt;/span&gt;&lt;font color="#000000"&gt; appEx = &lt;/font&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:teal"&gt;ApplicationException&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt;.Format(&lt;/font&gt;&lt;span style="color:teal"&gt;CultureInfo&lt;/span&gt;&lt;font color="#000000"&gt;.CurrentCulture, &lt;/font&gt;&lt;span style="color:blue"&gt;global&lt;/span&gt;&lt;font color="#000000"&gt;::Empresa.AplicacionA.Modulo1.ComponentesAplicacion.Properties.&lt;/font&gt;&lt;span style="color:teal"&gt;Resources&lt;/span&gt;&lt;font color="#000000"&gt;.BllEx002, userName, classMethod, requiredPermissionName));&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;      &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;appEx.Data.Add(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ExceptionId&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;BllEx002&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;      &lt;/span&gt;appEx.Data.Add(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, userName);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;      &lt;/span&gt;appEx.Data.Add(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;InfoCustom&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, infoCustom);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue"&gt;throw&lt;/span&gt;&lt;font color="#000000"&gt; appEx;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Lucida Console'"&gt;}&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;Lo importante es que estoy metiendo los datos que yo quiera dentro del objeto Data que está a su vez dentro del objeto Exception. &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;Si la excepción es causada por el sistema (SqlException, por ejemplo), pues tendrá otra información relativa al error dentro de la excepción.&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;br&gt;&lt;font color="#000000"&gt;(2).- Capturo la excepción en el propio Servicio Web, con un try-catch dentro de &lt;br&gt;los Web-Methods, y ahí convierto la excepción normal de .NET en una &lt;br&gt;'SoapException'.&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;span style="color:teal"&gt;WebMethod&lt;/span&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Lucida Console'"&gt;public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:blue"&gt;bool&lt;/span&gt;&lt;font color="#000000"&gt; TransferenciaBfll_RealizarTransferencia(&lt;/font&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt; numCuentaOrigen, &lt;/font&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt; numCuentaDestino, &lt;/font&gt;&lt;span style="color:blue"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; cantidad)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;  &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;try&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;span&gt;                &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;      &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:teal"&gt;TransferenciaBfll&lt;/span&gt;&lt;font color="#000000"&gt;.RealizarTransferencia(numCuentaOrigen,&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;numCuentaDestino,&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;                      &lt;/span&gt;cantidad);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;  &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;catch&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="color:teal"&gt;Exception&lt;/span&gt;&lt;font color="#000000"&gt; ex)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;  &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;  &lt;/span&gt;ProcesarExcepcionParaSoap(ex);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:blue"&gt;false&lt;/span&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;En ese WebMethod solamente se llama a un método de un componente de negocio y en caso de haber alguna excepción, la procesamos en el Catch. ¿Qué hacemos en ese método llamado &lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Lucida Console'"&gt;ProcesarExcepcionParaSoap(ex), pues precisamente convertir la excepción normal de .NET en una SoapException y cambiar los datos internos de unas colecciones de datos a otras.&lt;/span&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;Aquí tenéis lo que hace este método ProcesarExcepcionParaSoap(ex):&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; ProcesarExcepcionParaSoap(&lt;/font&gt;&lt;span style="color:teal"&gt;Exception&lt;/span&gt;&lt;font color="#000000"&gt; ex)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;        &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;//(CDLTLL) Si tenemos detalles de la excepción de la transferencia&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;color:blue;font-family:'Lucida Console'"&gt;if&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; (ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ExceptionId&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;] != &lt;/font&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;{&lt;/span&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;//(CDLTLL) Hace falta crear la SoapException si se quiere transmitir&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;//(CDLTLL) detalles al cliente, porque el diccionario 'Data' no se serializa en XML del WS&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;//(CDLTLL) ni tampoco se serializa la innerException.&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;color:green;font-family:'Lucida Console'"&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;//(CDLTLL) Construimos el detalle de la excepción SOAP&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;System.Xml.&lt;/font&gt;&lt;span style="color:teal"&gt;XmlDocument&lt;/span&gt;&lt;font color="#000000"&gt; doc = &lt;/font&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; System.Xml.&lt;/font&gt;&lt;span style="color:teal"&gt;XmlDocument&lt;/span&gt;&lt;font color="#000000"&gt;();&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;System.Xml.&lt;/font&gt;&lt;span style="color:teal"&gt;XmlNode&lt;/span&gt;&lt;font color="#000000"&gt; node = doc.CreateNode(&lt;/font&gt;&lt;span style="color:teal"&gt;XmlNodeType&lt;/span&gt;&lt;font color="#000000"&gt;.Element, &lt;/font&gt;&lt;span style="color:teal"&gt;SoapException&lt;/span&gt;&lt;font color="#000000"&gt;.DetailElementName.Name, &lt;/font&gt;&lt;span style="color:teal"&gt;SoapException&lt;/span&gt;&lt;font color="#000000"&gt;.DetailElementName.Namespace);&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:green;font-family:'Lucida Console'"&gt;//Construimos detalles específicos de la SoapException.&lt;span&gt;                    &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;color:green;font-family:'Lucida Console'"&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;// Añadimos un nodo hijo XML de detalle, con un atributo por cada propiedad a controlar.&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;System.Xml.&lt;/font&gt;&lt;span style="color:teal"&gt;XmlNode&lt;/span&gt;&lt;font color="#000000"&gt; detalles = doc.CreateNode(&lt;/font&gt;&lt;span style="color:teal"&gt;XmlNodeType&lt;/span&gt;&lt;font color="#000000"&gt;.Element, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;DetallesExcepcionTransferencia&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&lt;a href="http://tempuri.org/"&gt;http://tempuri.org/&lt;/a&gt;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;XmlAttribute&lt;/span&gt;&lt;font color="#000000"&gt; attrExceptionId = doc.CreateAttribute(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;e&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ExceptionId&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;attrExceptionId.Value = ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ExceptionId&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;].ToString();&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;detalles.Attributes.Append(attrExceptionId);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;AccountNum&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;] != &lt;/font&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                    &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;XmlAttribute&lt;/span&gt;&lt;font color="#000000"&gt; attrAccountNum = doc.CreateAttribute(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;AccountNum&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                    &lt;/span&gt;attrAccountNum.Value = ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;AccountNum&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;].ToString();&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                    &lt;/span&gt;detalles.Attributes.Append(attrAccountNum);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;] != &lt;/font&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                    &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;XmlAttribute&lt;/span&gt;&lt;font color="#000000"&gt; attrAccountNum = doc.CreateAttribute(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;u&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                    &lt;/span&gt;attrAccountNum.Value = ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;].ToString();&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                    &lt;/span&gt;detalles.Attributes.Append(attrAccountNum);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ClassMethod&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;] != &lt;/font&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                    &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;XmlAttribute&lt;/span&gt;&lt;font color="#000000"&gt; attrAccountNum = doc.CreateAttribute(&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;c&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ClassMethod&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                    &lt;/span&gt;attrAccountNum.Value = ex.Data[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;ClassMethod&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;].ToString();&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                    &lt;/span&gt;detalles.Attributes.Append(attrAccountNum);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;                &lt;/span&gt;node.AppendChild(detalles);&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:green;font-family:'Lucida Console'"&gt;//Lanzamos la excepción SOAP con DETALLES(DATA).&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;color:teal;font-family:'Lucida Console'"&gt;SoapException&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; se = &lt;/font&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:teal"&gt;SoapException&lt;/span&gt;&lt;font color="#000000"&gt;(ex.Message, &lt;/font&gt;&lt;span style="color:teal"&gt;SoapException&lt;/span&gt;&lt;font color="#000000"&gt;.ClientFaultCode, Context.Request.Url.AbsoluteUri, node);&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:blue;font-family:'Lucida Console'"&gt;throw&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; se;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;            &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;else&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;            &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;//Lanzamos la excepción BASICA sin detalles.&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;color:blue;font-family:'Lucida Console'"&gt;throw&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; ex;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;}&lt;/span&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;        &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;(3).- Capturas la excepción en la aplicación cliente y accedes a las propiedades &lt;br&gt;dentro de la propiedad 'Message'.&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Verdana','sans-serif'"&gt;&lt;font color="#000000"&gt;Más en detalle, en el cliente, lo que hacemos es crear una instancia del objeto proxy y en el caso de detectar alguna excepción, procesarla en el CATCH:&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue"&gt;try&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;            &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;// Se instancia el WebService del Cliente para realizar la llamada&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;Modulo1WS&lt;/span&gt;&lt;font color="#000000"&gt; modulo1Ws = &lt;/font&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:teal"&gt;Modulo1WS&lt;/span&gt;&lt;font color="#000000"&gt;();&lt;span&gt;                &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green"&gt;// Proporcionamos las Credenciales actuales&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;modulo1Ws.Credentials = System.Net.&lt;/font&gt;&lt;span style="color:teal"&gt;CredentialCache&lt;/span&gt;&lt;font color="#000000"&gt;.DefaultCredentials;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:blue;font-family:'Lucida Console'"&gt;return&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; modulo1Ws.TransferenciaBfll_RealizarTransferencia(numCuentaOrigen, numCuentaDestino, cantidad);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;            &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;catch&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="color:teal"&gt;SoapException&lt;/span&gt;&lt;font color="#000000"&gt; soapEx)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;            &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal"&gt;ExcepcionesUtil&lt;/span&gt;&lt;font color="#000000"&gt;.ProcesarExcepcionSOAPGestionada(soapEx);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;span&gt;&lt;font color="#000000"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color:blue"&gt;false&lt;/span&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt;&lt;span&gt;            &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;font face=Calibri color="#000000" size=3&gt;&lt;span style="font-size:11pt;font-family:'Calibri','sans-serif'"&gt;Aquí también, el trabajo realmente se hace en el método &lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Lucida Console'"&gt;ProcesarExcepcionSOAPGestionada(soapEx).&lt;/span&gt; &lt;/font&gt;
&lt;p&gt;&lt;font face=Calibri color="#000000" size=3&gt;Básicamente, dentro de este método se accede a nuestros valores/propiedades de la siguiente forma:&lt;/font&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;color:blue;font-family:'Lucida Console'"&gt;string&lt;/span&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;font color="#000000"&gt; accNum = soapEx.Detail.FirstChild.Attributes[&lt;/font&gt;&lt;span style="color:maroon"&gt;&amp;quot;a:AccountNum&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;].Value.ToString();&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=EN-US style="font-size:8pt;font-family:'Lucida Console'"&gt;&lt;/span&gt; 
&lt;p&gt;&lt;font size=3&gt;&lt;font color="#000000"&gt;&lt;font face=Calibri&gt;Como se puede observar, el procesamiento de excepciones custom para Servicios-Web no es algo inmediato. Tampoco es que sea muy difícil, pero se complica. &lt;/font&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-6195401279134465681&amp;page=RSS%3a+Gestion+de+Excepciones+'custom'+en+Servicios+Web+b%c3%a1sicos+(ASMX)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=ctorre.spaces.live.com&amp;amp;GT1=CTORRE"&gt;</description><comments>http://CTORRE.spaces.live.com/Blog/cns!AA05835C7C30816F!207.entry#comment</comments><guid isPermaLink="true">http://CTORRE.spaces.live.com/Blog/cns!AA05835C7C30816F!207.entry</guid><pubDate>Wed, 03 Jan 2007 18:01:16 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://CTORRE.spaces.live.com/blog/cns!AA05835C7C30816F!207/comments/feed.rss</wfw:commentRss><wfw:comment>http://CTORRE.spaces.live.com/Blog/cns!AA05835C7C30816F!207.entry#comment</wfw:comment><dcterms:modified>2007-01-04T11:41:49Z</dcterms:modified></item></channel></rss>