Web.Config文件在MVC项目的views文件夹中做了什么?

我在部署我的应用程序时遇到了一些问题,在进行疑难解答时,我遇到了Views文件夹中的Web.Config文件。 为了尽量缩小对我的问题来源的可能性,我试图找出〜Web.Config文件的目的,但是不能真正find很多信息。

所以基本上我的问题是:

  1. Web.config文件在MVC项目的Views文件夹中做什么?
  2. 需要吗?

在Asp.Net webforms中,我相信要在文件夹中使用单独的web.config文件,该文件夹必须在IIS中设置为虚拟文件夹。 这是在MVC的情况下(即Views文件夹需要configuration为虚拟文件夹)?

不,你不需要configuration一个虚拟文件夹,因为这个额外的web.config文件。

web.config文件存在于视图文件夹中,以防止通过除您的控制器以外的任何方式访问您的视图。 在MVCdevise模式中,控制器应该路由请求并将渲染视图返回给调用客户端。

换句话说,您不能直接访问www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx上的视图。

如果您查看web.config文件,它实际上将HttpNotFoundHandler注册到所有path和动词:

 <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 

或者,在IIS 7中,它可能看起来像

 <add name="BlockViewHandler" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/> 

它configuration编译器的视图,如导入命名空间,并使views文件夹返回404。

这就是如果你想覆盖上面的web.config提到的东西,即如果你想在Views文件夹范围内自定义的东西。

视图文件夹中的web.config文件将执行一些您想要应用于视图文件夹内的页面的专门设置。

像configuration设置一样:连接string/ appsettings等

但这只适用于该文件夹,项目的其余部分将从根目录下的web.config中提取设置。

特别是当您使用区域的概念时,将会为每个包含单独的web.cfg文件的区域设置单独的文件夹,您可以在其中为每个区域应用不同的设置。