我是MVC 3的新手。为什么要使用两个web.config文件?
这两个web.config文件有何区别,各自的目的和功能是什么?
我是MVC 3的新手。为什么要使用两个web.config文件?
这两个web.config文件有何区别,各自的目的和功能是什么?
这是一个web.config
文件继承的示例,摘自MSDN
您可以在应用程序目录中分发ASP.NET配置文件,以便在继承层次结构中配置ASP.NET应用程序。此结构允许您在适当的目录级别实现应用程序所需的配置详细级别,而不会影响较高目录级别的配置设置。
具体来说,在MVC项目中,View
子目录中的web.config
用于定制.cshtml
/ .aspx
文件。您可以在子文件夹中使用web.config
文件来扩展、覆盖和删除从应用程序本身的根目录以及更高层次继承的设置,例如,一直到machine.config
/Views/web.config
中常见的配置包括:
404
响应,例如:<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
using
显式添加。您可以在此处添加常见自定义程序集的命名空间(例如自定义HTML助手扩展),例如。 <namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
...
RequestValidation
过滤器,配置说明在配置文件中有注释:RequestValidation
过滤器。配置文件中的注释最能说明这个问题:<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
web.config
继承上一级目录中另一个 web config 的所有数据? - AgentFire我想补充一点,/Views 文件夹中的 Web.Config 是声明特定于视图的命名空间的绝佳方式(如果不是最好的)。在 Web 应用程序中,几乎每个视图都会传递一个 ViewModel(而不是实际的模型)给它。在 @model 后声明完整的命名空间或具有相同的 @using App.Web.Viewmodels 很繁琐。这种方式,所有的 viewmodels 都是自动可用的,你必须额外地努力让真正的模型进入范围,这应该立即引起一些警报。
此外,通常一个应用程序可以得到很多扩展方法,专门用于视图(HTML-helper 跳入脑海)。在 /Views/Web.Config 中定义扩展类别的名称空间是有意义的。这样你就永远不会想 "为什么 IntelliSense 找不到我的 @Html.ImageLink() 方法?!"
视图有自己的配置。如果你处理区域,那么你将会知道有不止一个配置。
实际上,关键点在于视图的Web.Config是针对视图特定配置的,比如阻止直接访问视图。
编辑1: 根据评论要求提供更多解释。
在Views文件夹中存在web.config文件,以防止通过除控制器之外的任何方式访问视图。在MVC设计模式中,控制器应该路由请求并向调用客户端返回渲染视图。这意味着 localhost9999://Home/Index.cshtml 不应直接可访问。
为防止任何方式(除了控制器)访问你的视图,web.config文件存在于Views文件夹中。在MVC设计模式中,控制器应该路由请求并将一个渲染后的视图返回给调用客户端。
这意味着localhost9999://Home/Index.cshtml不应该直接被访问。
ASP.NET配置存储在web.config
文件(XML文件)中。
这些文件可以出现在ASP.NET应用程序的许多目录中。它们有助于在部署之前甚至在部署后配置应用程序行为,基于您可以使用记事本进行编辑的事实。此外,它们使您的代码和配置数据分离。
每个web.config
文件适用于存在它的目录和所有子目录。子目录中的web.config
文件可以用于覆盖父目录的web.config
文件。
您可以通过使用位置元素来覆盖单个文件或目录。详见链接。
设置继承规则如下:
首先是位于systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\
通常目录中的machine.config文件。
在同一目录中存在一个“主”web.config文件,为运行在机器上的ALL asp.net应用程序定义设置。
然后是应用程序中存在的web.config文件。
更多信息: