Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

A ver veamos, nosotros tenemos dos modos de correr una Aplicación Web en IIS 7.0, en modo clásico o en modo integrado, y esto lo configuramos a nivel de un Application Pool.

El modo clásico, es como conocemos al trabajo de ASP.NET con IIS 6.0, el modo integrado es nuevo modelo de trabajo de IIS 7.0, que entre una de las features, me van permitir extender mi servidor, y usar funcionalidades propias que sólo tenia en ASP.NET, con otros lenguajes como Php, ASP clásico, o en páginas estáticas. Revisar el siguiente enlace para mayores detalles: ASP.NET Integration with IIS7.

Ahora, estoy moviendo una Aplicación Web ASP.NET que funciona de lujo en IIS 6.0, a trabajar con IIS 7.0, ¿qué recomendaciones debemos tener?

Primero, si estamos presionados y debemos hacer el cambio de aplicaciones Web a IIS 7.0, para ayer, la opción altamente recomendable es usar el modo clásico (configurar el Application pool). Tenemos que tener permiso para administrar el servidor, nos vamos a Application Pools, y verificamos que por lo menos uno de ellos o creamos uno nuevo, tenga la propiedad Managed Pipeline Mode, en Classic. Con esta configuración si nuestra aplicación Web funcionaba bien en un servidor IIS 6.0, debería funcionar bien en un servidor IIS 7.0.

Application Pool - Advanced Settings

¿Qué pasa si a nivel de un Web Site, solo tengo un Application Pool?, y para no perjudicar a otras aplicaciones Web, debo mantener el modo integrado, que será para todas las Aplicaciones Web dentro del Web Site. Hay algunos cambios que debemos hacer, si estamos usando determinas features.

Por ejemplo si estamos usando modules o handlers, que están agregados en el web.config, al ejecutar la aplicación Web, obtendremos el siguiente error: HTTP Error 500.22 - Internal Server Error, "An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode".

Y el problema es que en el modo integrado, los modules y handlres, deben ser colocados dentro de las secciones <modules>, y <handlres>, de la sección <system.webServer>. Este último nos permite hacer configuraciones a nivel de IIS, y llevárnosla en la aplicación dentro del web.config, y no tener que replicarlas en un nuevo servidor.

La solución para este escenario es sencilla, podemos usar el siguiente comando, AppCmd.Exe, que hará la migración de las secciones en el web.config:

> %windir%\system32\inetsrv\Appcmd migrate config "<ApplicationPath>"

Donde:

  • "<ApplicationPath>" = "Default Web Site/"  o
  • "<ApplicationPath>" = "Default Web Site/WebApplication/"

Si todo salió bien, nos deberá salir un mensaje: Successfully migrate section "system.web./httpModules" | "system.web/httpHandlers".

Para mayores detalles sobre los cambios o features, en las cuales debemos tener cuidado, revisar: ASP.NET 2.0 Breaking Changes on IIS 7.0.

Atención, si la migración al modo Integrado les esta dando mucha lata y necesitan la Aplicación Web, lo mejor será usar el modo clásico. Lo ideal debe ser probarlo localmente (no producción), si todas las features de nuestra Aplicación funcionan correctamente en el modo integrado, antes de subirla a producción.

Saludos,

Published 5/6/2008 0:39 por Sergio Tarrillo
Archivado en: ,
Comparte este post:
http://geeks.ms/blogs/sergiotarrillo/archive/2008/06/05/87945.aspx

Comentarios

# re: Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

Gracias, me ha ayudado.

Saturday, February 7, 2009 6:02 PM por Rafa Saura

# re: Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

Hola. Articulo muy util. Muchas gracias me acaba de solucionar mi problema.

Wednesday, April 22, 2009 10:52 PM por David

# re: Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

Gracias por tu ayuda me salvaste.

Thursday, October 8, 2009 11:08 PM por Carlos

# re: Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

Muy buena explicación, es de mucha utilidad, cuesta adaptarse a win2008, pero los cambios que han realizado y su integración con open-source es sensacional

Monday, November 30, 2009 5:02 PM por Miguel

# re: Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

Disculpa, soy novato, quisiera saber desde donde ejecuto el comando de AppCmd, y que pongo en "Application Path", no entiendo lo que expusiste en tu articulo, tengo que poner la direccion fisica en donde se encuentra mi proyecto? o la carpeta que cree al hacer el publish de mi proyecto? (El nombre de mi proyecto se llama ePortafolio)

Thursday, April 15, 2010 1:36 AM por Abel

# re: Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?

Gracias!! solucionaste mi problema

Friday, June 4, 2010 2:41 PM por Marta

# Windows Azure Appfabric Access Control Service ACS (1/4)

  Por lo que veo en eventos, artículos y lo que me charlamos , he visto que algunos de los servicios

Friday, July 15, 2011 3:30 PM por \\Brain\Backup

# Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0? &laquo; La Ranita Inform??tica

PingBack desde  Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0? « La Ranita Inform??tica