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

时间:2013-11-13 17:14:11

标签: asp.net-mvc asp.net-mvc-5

我正在探索默认MVC 5项目的来源,发现创建了两个Web.Config文件。一个位于项目的根目录中,另一个位于Views的根目录中。为什么有两个?

2 个答案:

答案 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" />