我正在探索默认MVC 5项目的来源,发现创建了两个Web.Config文件。一个位于项目的根目录中,另一个位于Views的根目录中。为什么有两个?
答案 0 :(得分:3)
视图文件夹中存在web.config文件以阻止访问 您的控制之外的任何其他方式的观点。在MVC设计中 模式,控制器应该路由请求并返回一个 渲染视图到调用客户端。换句话说,你的观点 www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx 不应该直接访问。
What does the Web.Config file do in the views folder of a MVC project
答案 1 :(得分:2)
IIS中的所有配置文件都是分层的。如果需要,您可以在每个目录中拥有一个,并且每个较低级别的配置都会覆盖较高级别的配置。
在机器级配置中,定义了每个部分的含义以及这些部分可以出现在哪些web.config
文件中,这构成了一个非常复杂的设置系统,可以在每个级别进行更改。例如,请参阅Working with Configuration Files in IIS 7上的这篇文章,特别是配置级别
对于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" />