Web.Config文件在MVC项目的views文件夹中做了什么?
我在部署我的应用程序时遇到了一些问题,在进行疑难解答时,我遇到了Views
文件夹中的Web.Config
文件。 为了尽量缩小对我的问题来源的可能性,我试图找出〜Web.Config文件的目的,但是不能真正find很多信息。
所以基本上我的问题是:
-
Web.config
文件在MVC项目的Views
文件夹中做什么? - 需要吗?
在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文件的区域设置单独的文件夹,您可以在其中为每个区域应用不同的设置。