【发布时间】:2013-11-13 17:14:11
【问题描述】:
我在探索默认 MVC 5 项目的来源,发现创建了两个 Web.Config 文件。一个位于项目的根目录中,另一个位于 Views 的根目录中。为什么有两个?
【问题讨论】:
我在探索默认 MVC 5 项目的来源,发现创建了两个 Web.Config 文件。一个位于项目的根目录中,另一个位于 Views 的根目录中。为什么有两个?
【问题讨论】:
web.config 文件存在于 Views 文件夹中,以防止访问 通过控制器以外的任何方式查看您的视图。在 MVC 设计中 模式,控制器应该路由请求并返回一个 呈现给调用客户端的视图。换句话说,你的观点在 www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx 不应直接访问。
What does the Web.Config file do in the views folder of a MVC project
【讨论】:
IIS 中的所有配置文件都是分层的。如果需要,您可以在每个目录中都有一个,并且每个较低级别的配置都会覆盖较高级别的配置。
在机器级配置中,定义了每个部分的含义以及这些部分可以出现在哪些web.config 文件中,这构建了一个非常复杂的设置系统,可以在每个级别进行更改。例如,请参阅Working with Configuration Files in IIS 7 上的这篇文章,特别是 Configuration Levels
对于 MVC 应用程序,顶级配置文件定义适用于整个项目的 Web 服务器和 Web 应用程序设置。 Views 文件夹中的 web.config 文件会在需要时覆盖这些设置,并添加仅适用于项目中实际 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" />
【讨论】: