我正在探索默认 MVC 5 项目的来源,发现创建了两个 Web.Config 文件。一个位于项目的根目录中,另一个位于 Views 的根目录中。为什么有两个?
2 回答
web.config 文件存在于 Views 文件夹中,以防止通过控制器以外的任何方式访问您的视图。在 MVC 设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端。换句话说,您在 www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx 上的视图不应直接访问。
IIS 中的所有配置文件都是分层的。如果需要,您可以在每个目录中都有一个,并且每个较低级别的配置都会覆盖较高级别的配置。
在机器级配置中,定义了每个部分的含义以及web.config
这些部分可以出现在哪些文件中,这构建了一个非常复杂的设置系统,可以在每个级别进行更改。例如,请参阅这篇关于在 IIS 7中使用配置文件的文章,特别是配置级别部分
对于 MVC 应用程序,顶级配置文件定义适用于整个项目的 Web 服务器和 Web 应用程序设置。文件夹中的 web.config 文件Views
会在需要时覆盖这些设置,并添加仅适用于项目中实际 Razor 视图的其他设置,而不是(例如)App_Data
文件夹或您的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" />