www visual update tools studio packs net mvc4 mvc language instalar asp asp.net-mvc asp.net-mvc-3 web-config

asp.net mvc - visual - ¿Por qué.NET genera dos archivos web.config en una aplicación MVC asp.net?



mvc 4+ (6)

Además de distribuir sus configuraciones para su proyecto de manera simple, puede convertirlo en tiempo de ejecución para hacer una publicación. Una mano en la rueda. Ver:

Transformaciones Web.config

Sintaxis de transformación

Soy nuevo en MVC 3. ¿Cuál es la razón para usar dos archivos web.config?

¿Cuál es la diferencia entre esos 2 archivos web.config, y cuál es el propósito de cada uno y su función?


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 de MVC, los controladores deben enrutar las solicitudes y devolver una vista representada al cliente que realiza la llamada.

significa que localhost9999: //Home/Index.cshtml no debe ser accesible directamente.


La configuración de ASP.NET se almacena en archivos web.config (archivos XML).

Estos archivos pueden aparecer en muchos directorios en una aplicación ASP.NET. Ayudan a configurar el comportamiento de la aplicación incluso antes después de la implementación, en función del hecho de que puede editarlos con el bloc de notas. También mantienen separados tu código y tus datos de configuración.

Cada archivo web.config aplica al directorio que existe y TODOS los subdirectorios secundarios. Web.config archivos Web.config en el directorio secundario se pueden usar para anular el archivo web.config del padre.

Tiene la opción de anular los archivos o directorios individuales utilizando el elemento de ubicación. Ver LINK

Las reglas de herencia de configuración son como foillows.

Primero está el archivo machine.config que se encuentra generalmente en systemroot/Microsoft.NET/Framework/versionNumber/CONFIG/

En el mismo directorio existe un archivo ''master'' web.config que define la configuración de TODAS las aplicaciones asp.net que se ejecutan en la máquina.

Luego vienen sus archivos web.config que existen en su aplicación.

Más información:

Visión general de la configuración de ASP.NET

Jerarquía y herencia del archivo de configuración ASP.NET


La vista tiene su propia configuración. Si está trabajando con áreas, entonces conocerá más de una configuración.

En realidad, el punto es que Web.Config de view es para ver la configuración específica, como bloquear el acceso directo a las vistas.

EDIT 1: Más Explicación como se le preguntó en los comentarios.

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 de MVC, los controladores deben enrutar las solicitudes y devolver una vista representada al cliente que realiza la llamada. Eso significa que localhost9999: //Home/Index.cshtml no debe ser accesible directamente.


Me gustaría añadir a esto que Web.Config en la carpeta / Views es una gran (si no la) forma de declarar espacios de nombres específicamente para sus vistas. En una aplicación web es muy posible que casi todas las vistas obtengan un ViewModel (en lugar de su modelo real) pasado a él. Declarar el espacio de nombre completo después de @model o tener el mismo @using App.Web.Viewmodels se vuelve tedioso. De esta forma, todos los modelos de vista están disponibles automáticamente y debe realizar un trabajo adicional para obtener el alcance de los modelos reales, que luego configurarán algunas alarmas de inmediato.

Además, generalmente una aplicación puede obtener muchos métodos de extensión específicamente para usar en la vista (el HTML-helper salta a la mente). Tiene sentido definir el espacio de nombres para esta clase de extensión en /Views/Web.Config. De esta forma, nunca se preguntará "¿Por qué IntelliSense no puede encontrar mi método @ Html.ImageLink () ??"


Este es un ejemplo de herencia de archivos web.config . Desde MSDN

Puede distribuir archivos de configuración de ASP.NET en los directorios de sus aplicaciones para configurar las aplicaciones ASP.NET en una jerarquía de herencia. Esta estructura le permite alcanzar el nivel de detalle de configuración que sus aplicaciones requieren en los niveles de directorio apropiados sin afectar la configuración de los niveles superiores de directorio.

Específicamente, para proyectos de MVC, el web.config en el subdirectorio View se usa para adaptar los archivos .cshtml / .aspx . Puede usar archivos web.config en subcarpetas para ampliar, anular y eliminar configuraciones heredadas de la propia raíz de la aplicación y más arriba en la jerarquía, por ejemplo, hasta machine.config

Las configuraciones comunes en /Views/web.config incluyen:

  • Las solicitudes de bloqueo que intentan acceder a las vistas de razor y aspx directamente (estas deben ser servidas desde Controladores a través de las rutas apropiadas). Una respuesta 404 está configurada para tales solicitudes directas, por ejemplo

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

  • Para configurar los espacios de nombres de importación predeterminados para las páginas de vista, que de otro modo tendrían que agregarse explícitamente mediante el using . Puede agregar espacios de nombres para sus ensambles personalizados comunes aquí (por ejemplo, extensiones personalizadas html helper), por ej.

<namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> ...

  • Para configurar el filtro Anti-xss RequestValidation para MVC. El comentario agregado en la configuración lo explica mejor:

<!-- Enabling request validation in view pages would cause validation to occur after the input has already been processed by the controller. By default MVC performs request validation before a controller processes the input. To change this behavior apply the ValidateInputAttribute to a controller or action. -->