Asp.net mvc 默认MVC项目中的两个Web.Config文件

Asp.net mvc 默认MVC项目中的两个Web.Config文件,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我在探索默认MVC5项目的源代码时发现创建了两个Web.Config文件。一个位于项目的根目录中,另一个位于视图的根目录中。为什么有两个 视图文件夹中存在web.config文件,以阻止访问 您可以通过控制器以外的任何方式查看视图。在MVC设计中 模式中,控制器应该路由请求并返回 呈现给调用客户端的视图。换句话说,你的观点是 www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx 不应直接访问 IIS中的所有配置文件都是分

我在探索默认MVC5项目的源代码时发现创建了两个Web.Config文件。一个位于项目的根目录中,另一个位于视图的根目录中。为什么有两个

视图文件夹中存在web.config文件,以阻止访问 您可以通过控制器以外的任何方式查看视图。在MVC设计中 模式中,控制器应该路由请求并返回 呈现给调用客户端的视图。换句话说,你的观点是 www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx 不应直接访问


IIS中的所有配置文件都是分层的。如果愿意,每个目录中都可以有一个,并且每个较低级别的配置都会覆盖较高级别的配置

在机器级配置中,有关于每个部分的含义以及这些部分可以出现在哪些
web.config
文件中的定义,这建立了一个相当复杂的设置系统,可以在每个级别进行更改。例如,请参阅本文,特别是配置级别部分

对于MVC应用程序,顶级配置文件定义应用于整个项目的web服务器和web应用程序设置。您的
Views
文件夹中的web.config文件会根据需要覆盖这些设置,并添加仅适用于项目中实际Razor视图的附加设置,而不是(比如)应用程序数据文件夹或您的
Global.asax
。例如,视图的web.config添加了一个附加的程序集引用,该引用为MVC命名空间添加了一个XML标记,这仅在HTML页面的上下文中才有意义:

<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />