我在部署应用程序时遇到一些问题,在进行故障排除时,我遇到了Web.Config
文件夹中的Views
文件。为了缩小我的问题的来源的可能性,我试图找出~Web.Config`文件的目的,但实际上找不到太多的信息。
基本上我的问题是:
Web.config
文件在MVC项目的Views
文件夹中做了什么? 在Asp.Net webforms中,我认为要在文件夹中使用单独的web.config文件,该文件夹必须在IIS中设置为虚拟文件夹。这是MVC中的情况(即Views
文件夹是否需要配置为虚拟文件夹)?
答案 0 :(得分:75)
不,由于这个额外的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"/>
答案 1 :(得分:7)
它为视图配置编译器,例如导入命名空间,并使views文件夹返回404。
答案 2 :(得分:7)
views文件夹中的web.config文件用于执行一些您想要应用于视图文件夹内页面的专门设置。
像配置设置一样:连接字符串/ appsettings等。
但这仅适用于该文件夹,项目的其余部分将从根目录中的web.config中获取设置。
特别是当您使用区域概念时,每个区域都会有单独的文件夹,其中包含单独的web.cfg文件,您可以在其中为每个区域应用单独的设置。
答案 3 :(得分:6)
如果您想覆盖上部web.config
中提到的内容,即如果您想要自定义Views
文件夹范围内的内容,那就是这样。