viernes, enero 04, 2008

IIS7 y HttpHandlers

Ahora que ya he estado trabajando con Windows Vista... mis aplicaciones web que contenian AJAX no se ejecutaban de manera normal al momento de ubicarlas en mi IIS...

Al ppio pense que sería error de Windows Vista (al pobre lo queremos culpar de todo).
Pero ahora fue de nuestro IIS7.
Y ésto es por que la manera que el interpreta los HttpHandlers es de manera diferente.
Al momento de ejecutar nuestra página aparecía el siguiente error:

Existen dos soluciones que el mismo error nos lo indica:

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"

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, modifica la propiedad AppPoolApplication de nuestro directorio virtual en el IIS7 y tambien se puede hacer de la siguiente manera

a) Abir el IIS7
b) Selecciona el WebSite que vas a modificar y has clic en "Propiedades Basicas/Basic Settings" en el menú Acciones/Actions situado a la derecha.

c) Cambiar el Application Pool, dando clic en el boton "Seleccionar/Select y elegir "Classic .NET AppPool".

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