asp.net - transforms - ¿Por qué hay 2 archivos web.config?
web config transform visual studio 2017 (4)
Alguien me envió un enlace para descargar la muestra MVC de asp.net estándar de muestra, noté que había 2 archivos web.config:
- 1 en el directorio raíz
- 1 en el directorio de vistas
¿Cuál es la razón para esto?
/Views/Web.config
Este no es el archivo web.config principal de su aplicación. Simplemente contiene una directiva que indica al servidor web que no sirva ningún archivo * .aspx en / Vistas (ya que deberían ser procesados por un controlador, no invocados directamente como los archivos clásicos de WebForms * .aspx). Este archivo también contiene la configuración necesaria para que el compilador de páginas ASP.NET ASPX estándar funcione correctamente con la sintaxis de la plantilla de vista MVC de ASP.NET.
/Web.config
Esto define la configuración de su aplicación.
Esto es del libro Pro ASP.NET MVC Framework
El archivo web.config en el directorio de Vistas solo tiene una entrada significativa, que bloquea el acceso directo:
<add path="*" verb="*"
type="System.Web.HttpNotFoundHandler"/>
Esto es para que alguien no pueda intentar manualmente ir a http://www.yoursite.com/views/main/index.aspx
y cargar la página fuera de la canalización de MVC.
Lo que dijo Silky, excepto reescrito.
En ASP .NET hay básicamente una cosa de estilo de herencia que ocurre con los archivos de configuración. Tiene un machine.config allí en la carpeta del framework .net que tiene configuraciones básicas para todas las aplicaciones en la máquina. Cualquier cosa que especifique en una raíz web.config con las mismas etiquetas anulará las cosas en la máquina.config.
Cualquier web.config en una subcarpeta puede anular o agregar configuraciones adicionales dentro de esa subcarpeta y sus hijos.
Siempre es divertido para mí la primera vez que uno de mis programadores más nuevos coloca un manejador http en una carpeta raíz y luego todas las aplicaciones en los directorios virtuales explotan porque no tienen la DLL (deberían haber puesto el http declaración del manejador solo en la aplicación que lo necesitaba, no en la raíz). :)
Puede tener varios web.configs para definir diferentes configuraciones para esa carpeta. Utilizado para permisos, y otras cosas similares.