Por fin llegó IIS 7 (bueno ya hace un tiempo :-D), pero ahora tocan unas cuantas cosillas a tener en cuenta y una de ellas es la que os quiero contar, si, los HttpHandlers, que cada día se encuentran mas en cada una de nuestras aplicaciones.

Si creamos en Visual Studio un proyecto de tipo Web Services y queremos trabajar un un HttpHandler, lo primero que hacemos es añadir algo similar a esto en el web.config:

<configuration>
   <system.web>

   …
      <httpHandlers>
         <add verb=”*” path=”CualquierCosa.ashx” type=”MyNameSpace.MiClase”/>
      </httpHandlers>

   …
   </system.web>
</configuration>

En el momento de ejecutar nuestro código ocurre lo siguiente:

Ejecuta lo siguiente:

  • %systemroot%\system32\inetsrv\APPCMD.EXE migrate config “Default Web Site/WebSite”

o, esto otro

  • %systemroot%\system32\inetsrv\APPCMD.EXE set app “Default Web Site/WebSite” /applicationPool:”Classic .NET AppPool”

La verdad, la solución a estos errores esta muy conseguida, y, hay poco que añadir.

El primer comando, añade una nueva sección al web.config y además coexiste con la inicial y se ejecutará aquella que se corresponda con la configuración establecida.

   <configuration>

   …
   <system.webServer>
      <handlers>
         <add name=”CualquierCosa.ashx_*” path=”CualquierCosa.ashx” verb=”*” type=”CualquierCosa” preCondition=”integratedMode,runtimeVersionv2.0″ />
      </handlers>
      <validation validateIntegratedModeConfiguration=”false” />
   </system.webServer>

   …

   </configuration>

En cuanto al segundo, os cuento como configurar esto mismo, pero a través de clicks que es, lo que mejor recordamos, jejeje… Es fácil, pero bueno, no siempre vamos a postear lo dificil, ¿no?

1.- Abrir el IIS7

2.- Para el Web-Site a configurar y una vez seleccionado, hacer click en “Advanced Settings…” en el menú Actions situado a la derecha.

3.- Cambiar el Application Pool, para ello, bastará con seleccionar [Behavior-Application Pool] y elegir “Classic .NET AppPool”. 

Ahora, nuestra aplicación funcionará perfectamente utilizando el modo Clásico de Pipeline.

Saludos, Juanlu