¿Qué hace el archivo Web.Config en la carpeta de vistas de un proyecto MVC?

85

Tengo algunos problemas con la implementación de mi aplicación y, mientras solucionaba problemas, encontré el Web.Configarchivo en la Viewscarpeta. En un intento por reducir las posibilidades de las fuentes de mi problema, traté de averiguar el propósito de ese archivo ~ Web.Config` pero realmente no puedo encontrar mucha información.

Entonces, básicamente, mis preguntas son:

  1. ¿Qué hace el Web.configarchivo en la Viewscarpeta de un proyecto MVC?
  2. ¿Es necesario?

En los formularios web Asp.Net, creo que para usar un archivo web.config separado en una carpeta, esa carpeta debe configurarse como una carpeta virtual en IIS. ¿Es este el caso en MVC (es decir, es Viewsnecesario configurar la carpeta como una carpeta virtual)?

Ola Karlsson
fuente
15
No hay preguntas "estúpidas"
contactmatt
8
Nunca tenga miedo de hacer preguntas "estúpidas". Si no sabe la respuesta, entonces no es "estúpido". No hay nada "estúpido" en comprender mejor algo.
DazManCat
4
SO es conocido por rociar a los usuarios con napalm por hacer preguntas ...
Pangamma

Respuestas:

79

No, no necesita configurar una carpeta virtual debido a este archivo web.config adicional.

El archivo web.config existe en las carpetas Vistas para evitar el acceso a sus vistas por cualquier medio que no sea su controlador. En el patrón de diseño MVC, se supone que los controladores enrutan las solicitudes y devuelven una vista renderizada al cliente que realiza la llamada.

En otras palabras, su vista en www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx no debería ser directamente accesible.

Si echa un vistazo al archivo web.config, en realidad registra HttpNotFoundHandlertodas las rutas y verbos:

<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>

O, en IIS 7, podría parecer

<add name="BlockViewHandler" path="*.aspx" verb="*" 
    preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
David Fox
fuente
21
Pero el web.config generado contiene una gran cantidad de otro texto, ¿todo eso es redundante?
Eamon Nerbonne
7

Configura el compilador para las vistas, como la importación de espacios de nombres, y hace que la carpeta de vistas devuelva un 404.

Daniel A. White
fuente
7

El archivo web.config en la carpeta de vistas es para realizar algunas configuraciones especializadas que desea aplicar a las páginas dentro de la carpeta de vistas.

Como configuraciones de configuración como: cadena de conexión / configuración de aplicaciones, etc.

pero eso será aplicable solo a esa carpeta y el resto del proyecto recogerá la configuración de web.config presente en la raíz.

Especialmente cuando use el concepto de área, habrá una carpeta separada para cada área que contiene un archivo web.cfg separado donde puede aplicar configuraciones separadas para cada área.

Prajwal
fuente
6

Eso es si desea anular algo mencionado en la parte superior web.config, es decir, si desea personalizar algo dentro del alcance de la Viewscarpeta.

Ken D
fuente