我是MVC 3的新手。使用两个web.config文件的原因是什么?
这两个web.config文件有什么区别,每个文件的目的是什么?
答案 0 :(得分:52)
这是web.config
文件继承的示例。来自MSDN
您可以在整个应用程序目录中分发ASP.NET配置文件,以在继承层次结构中配置ASP.NET应用程序。此结构允许您在相应的目录级别实现应用程序所需的配置详细级别,而不会影响更高目录级别的配置设置。
具体而言,对于MVC项目,web.config
子目录中的View
用于定制.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
过滤器。配置中添加的评论最能说明这一点:
<!--
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.
-->
答案 1 :(得分:20)
我想补充一点,/ Views文件夹中的Web.Config是一种很好的(如果不是那种)方式来专门为您的视图声明命名空间。在Web应用程序中,几乎每个视图都很可能获取传递给它的ViewModel(而不是您的实际模型)。在@model之后声明完整的命名空间或具有相同的@using App.Web.Viewmodels变得乏味。这样,所有视图模型都可以自动获得,你必须做额外的工作来获得范围内的真实模型,然后立即设置一些警报。
此外,通常应用程序可以获得大量专门用于视图的扩展方法(HTML-helper跳出脑海)。在/Views/Web.Config中为此扩展类定义名称空间是有意义的。这样你就不会怀疑“为什么IntelliSense无法找到我的@ Html.ImageLink()方法?”
答案 2 :(得分:5)
View有自己的配置。如果您正在处理区域那么您将了解多个配置。
实际上,重点是视图的Web.Config用于视图特定配置,例如阻止对视图的直接访问。
编辑1: 在评论中提出更多解释。
“视图”文件夹中存在web.config文件,以防止通过控制器以外的任何方式访问您的视图。在MVC设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端。这意味着不应该直接访问localhost9999://Home/Index.cshtml。
答案 3 :(得分:5)
“视图”文件夹中存在web.config文件,以防止通过控制器以外的任何方式访问您的视图。在MVC设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端。
表示 localhost9999://Home/Index.cshtml 不应该直接访问。
答案 4 :(得分:3)
ASP.NET配置存储在web.config
个文件(XML文件)中。
这些文件可以出现在ASP.NET应用程序的许多目录中。它们甚至可以在部署之后帮助配置应用程序行为,具体取决于您可以使用记事本编辑它们。他们还将代码和配置数据分开。
每个web.config
文件都适用于它所存在的目录和所有子子目录。子目录中的Web.config
个文件可用于覆盖父项的web.config
文件。
您可以选择使用location元素覆盖单个文件或目录。见LINK
设置继承规则与foillows一样。
首先是machine.config文件,该文件通常位于systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\
在同一目录中存在一个'master'web.config文件,该文件定义了在机器上运行的所有asp.net应用程序的设置。
然后出现您的应用程序中存在的web.config文件。
更多信息:
答案 5 :(得分:1)