2010-07-20 27 views
6

Me estoy moviendo un proyecto ASP.NET de .NET 3.5 a .NET 4.Mover un proyecto ASP.NET para .NET 4

Todo funciona muy bien si estoy de depuración bajo web.dev (es decir. en Visual Studio [2010]), pero tan pronto como intento ejecutar esto bajo IIS7 [.5] el depurador no se puede conectar. Ejecutar el proyecto directamente bajo IIS solo hace que arroje 403s (sin subcódigo, por lo que no hay mucha ayuda).

Configuro el sitio tomando el sitio actual (y en funcionamiento) .NET 3.5, y cambiando el AppPool a uno con .NET 4 runtime. Confirmé que todos los permisos de archivos son kosher (al menos desde la perspectiva de .NET 3.5). Siento que me falta algún paso de configuración aquí ...

El mensaje de error al intentar adjuntar el depurador es simplemente "No se puede iniciar la depuración en el servidor web". No es el mensaje de error más útil del mundo.

La conexión directa al proceso de w3wp asociado sugiere que la aplicación nunca se despliega correctamente.

La pregunta básica es, ¿cómo afectaría este cambio de .NET 3.5 a .NET 4 para un proyecto que se ejecuta bajo IIS?

+0

Supongo que convirtió el proyecto en VS a .NET 4 también? – mxmissile

+0

@mxmissile - sí, eso sería una suposición segura. :) –

Respuesta

0

Comience un nuevo proyecto desde cero y simplemente utilice allí el archivo web.config. Copie todas sus 3.5 páginas allí y mueva manualmente los elementos web.config que necesite. Las páginas en sí no requieren ninguna conversión, todo está en la web.config. El web.config para una página .net 4.0 es en realidad significativamente más pequeño debido al hecho de que .net 4.0 no es solo una extensión de .NET 2.0 como 3.5.

+0

¿Cuál es la diferencia entre cómo web.dev e IIS tratan a web.config? –

2

No puede mezclar .NET frameworks en el mismo grupo de aplicaciones. Así que asegúrese de que solo los sitios web de .NET 4.0 estén en su grupo de aplicaciones.

Recuerde establecer el sitio web/directorio virtual en .NET 4 también.

4

Lo descubrí.

.NET 4 no se había instalado para fines de IIS. No me preguntes por qué fue ese el caso.

Ejecutando asp_net_regiis -i en el directorio de instalación .NET 4 (\ Windows \ Frameworks \ v4.0.xxxx) bajo el símbolo del sistema de Visual Studio (x64 en mi caso) resolvió el problema.

1

IIS7 tiene dos opciones dentro de un "sitio web". En IIS6, debe agregar una subaplicación como "Agregar directorio virtual ..." en IIS7, lo que le obliga a mantener la misma versión de AppPool y, por lo tanto, la versión de .NET Framework como sitio web.

Pero, IIS7 ahora tiene una opción "Agregar aplicación ...", que le permite esencialmente hacer lo que IIS6 había permitido, para que pueda indicar explícitamente que se ejecuta AppPool y puede diferir del sitio web principal.