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


85

我在部署应用程序时遇到一些问题,在进行故障排除时,我碰到了Web.Config文件Views夹中的文件。为了缩小问题源的可能性,我试图找出该〜Web.Config`文件的用途,但实际上找不到太多信息。

所以基本上我的问题是:

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

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


15
没有“愚蠢”的问题
contactmatt 2012年

8
永远不要害怕问“愚蠢”的问题。如果您不知道答案,则它不是“愚蠢的”。更好地理解某事绝非“愚蠢”。
DazManCat

4
SO以在napalm中向用户提问而闻名...
Pangamma

Answers:


79

不,由于这个额外的web.config文件,您不需要配置虚拟文件夹。

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

换句话说,你在www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx视图应该不是直接访问。

如果您查看一下web.config文件,它实际上会将登记HttpNotFoundHandler到所有路径和动词:

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

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

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

21
但是生成的web.config包含大量其他文本-都是多余的吗?
Eamon Nerbonne 2014年


7

views文件夹中的web.config文件将执行一些特定的设置,您希望将这些设置应用于view文件夹中的页面。

像配置设置一样:连接字符串/ appsettings等。

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

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


6

也就是说,如果您要覆盖上方的内容web.config,即要自定义Views文件夹范围内的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.