2009-02-23 9 views
6

Me gustaría implementar mi aplicación ASP.NET MVC en una empresa de alojamiento web (como DiscountASP.net). Estoy confundido sobre lo que debe estar en el archivo web.config en el servidor web. Cuando creo el proyecto localmente, obtengo un web.config inflado con todo tipo de módulos adicionales, manejadores, compiladores. ¿Debo agregar todos estos elementos al archivo web.config de producción?Implementación de una aplicación ASP.NET MVC en IIS7 y mantenimiento limpio de web.config

Todavía estoy implementando mi aplicación ASP.NET actual (no MVC) en IIS6 y siempre he creado a mano un sencillo web.config para el entorno de producción y lo he cargado con el resto de los archivos de la aplicación. Parece que con IIS7 estoy destinado a usar el Administrador de IIS en el servidor web para construir el web.config. ¿Cuál es la mejor manera de construir/administrar el web.config en un servidor de producción?

Respuesta

6

Así que aquí está lo que he encontrado hasta ahora tratando de implementar mi aplicación MVC en DiscountASP.net.

El primero que he encontrado era que tenía que asegurarse de que System.Web.Mvc fue enviado a la papelera, ya que no está instalado en la GAC:

http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

Entonces empecé con una super web.config básico que acaba de contener la cadena de conexión de la base de datos. Mi aplicación no funcionó.

Entonces copió el lío que es mi web.config local hasta el servidor y cambió la cadena de conexión de base de datos y las cosas empezaron a trabajar, pero todavía estaba recibiendo el mensaje de error:

Could not load type 'System.Web.Mvc.ViewPage<MyCustomModel>' 

Entonces me encontré este artículo que explica cómo se tiene que cambiar el web.config para apoyar no utilizando código detrás de los archivos (que no es necesario hacer esto con el servidor local de Visual Studio web por alguna razón):

http://blog.benhall.me.uk/2009/01/aspnet-mvc-rc1-removing-code-behind.html

Personall y, no me gusta cómo la configuración simple de la aplicación, como las cadenas de conexión y la configuración de SMTP, se mezclan con las complejas configuraciones de infraestructura de MVC (y AJAX.NET). Una buena opción sería que la empresa de alojamiento (como DiscountASP.net) configurara Master.config (o un nivel superior de web.config) para admitir MVC, de modo que mi web.config solo necesitaría contener mi aplicación simple. configuraciones.

1

Tal vez tome un enfoque de búsqueda y destrucción y elimine la configuración hasta que haya eliminado todo lo que no necesita. Sin conocer su aplicación y sus dependencias, es difícil decir lo que puede o no necesitar.

El mejor enfoque es tener siempre un entorno de desarrollo que refleje lo más cerca posible su entorno de producción: no desea editar las configuraciones de producción de esta manera.

+0

Digamos que tengo una aplicación muy simple y lo único que he agregado a web.config es una cadena de conexión a la base de datos. ¿Debo obtener todos los controladores, módulos y compiladores en la web?config o esta información estará en el machine.config ya? –

+0

Debería ser capaz de quitar las otras cosas, pero como está utilizando MVC puede haber manipuladores y módulos que se requieren para que MVC funcione. Lo mejor que puedo decirle es probarlo localmente hasta que tenga una configuración simplificada para implementar. –

3

.Net 3.5 e IIS7 agregan bastante texto al web.config. Lo que hago es usar el Administrador de IIS en IIS7 para configurar la aplicación una vez. Luego tomo ese web.config modificado y lo controlo nuevamente en el control de fuente. De esta forma, todas las configuraciones de IIS se conservan al migrar entre entornos.

+3

Siento que web.config se ha estado llenando de basura. Es cada vez más difícil hacer un seguimiento de para qué sirve todo esto. –

2

System.Web.Extensions es el material de MS AJAX AKA Atlas, hay varios módulos y manipuladores y secciones asociadas con este conjunto. Siéntete libre de eliminarlos si no estás usando MS AJAX.

+0

No estoy seguro de por qué fue rechazado, simplemente eliminé un montón de basura de mi configuración web de esa sugerencia ... – rball

Cuestiones relacionadas