【发布时间】:2026-02-19 01:15:02
【问题描述】:
我是 MVC 3 的新手。使用两个 web.config 文件的原因是什么?
这 2 个 web.config 文件有什么区别,每个文件的用途和功能是什么?
【问题讨论】:
-
这是您的问题的解决方案,two webconfig files in mvc application希望此链接对您有所帮助。
标签: asp.net-mvc asp.net-mvc-3 web-config
我是 MVC 3 的新手。使用两个 web.config 文件的原因是什么?
这 2 个 web.config 文件有什么区别,每个文件的用途和功能是什么?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 web-config
View 有自己的配置。如果您正在处理区域,那么您将了解不止一种配置。
实际上重点是视图的 Web.Config 是用于视图特定的配置,例如阻止对视图的直接访问。
编辑 1: 在 cmets 中询问的更多解释。
web.config 文件存在于 Views 文件夹中,以防止通过控制器以外的任何方式访问您的视图。在 MVC 设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端。这意味着 localhost9999://Home/Index.cshtml 不应直接访问。
【讨论】:
这是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 过滤器。配置中添加的注释最好地说明了这一点:<!--
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配置中继承所有数据?
<clear> 或<remove> 标签擦除所有或从父配置继承的特定设置
location 标签解决了这个问题。
web.config 文件存在于 Views 文件夹中,以防止通过控制器以外的任何方式访问您的视图。在 MVC 设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端。
表示 localhost9999://Home/Index.cshtml 不应直接访问。
【讨论】:
ASP.NET 配置存储在web.config 文件(XML 文件)中。
这些文件可以出现在 ASP.NET 应用程序的许多目录中。基于您可以使用记事本编辑它们的事实,它们甚至可以在部署之前帮助配置应用程序行为。他们还把你的代码和你的配置数据分开。
每个web.config 文件都适用于它存在的目录和所有子目录。子目录中的Web.config 文件可用于覆盖父目录的web.config 文件。
您可以选择使用 location 元素覆盖单个文件或目录。见LINK
设置继承规则如下。
首先是 machine.config 文件,通常位于systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\
在同一目录中存在一个“主”web.config 文件,该文件定义了机器中运行的所有 asp.net 应用程序的设置。
然后是您的应用程序中存在的 web.config 文件。
更多信息:
【讨论】:
我想补充一点,/Views 文件夹中的 Web.Config 是一种很好的(如果不是的话)专门为您的视图声明命名空间的方式。在 Web 应用程序中,几乎每个视图都可能获取传递给它的 ViewModel(而不是您的实际模型)。在 @model 之后声明完整的命名空间或具有相同的 @using App.Web.Viewmodels 变得乏味。这样,所有视图模型都自动可用,您必须做额外的工作才能将真实模型纳入范围,然后立即设置一些警报。
此外,通常一个应用程序可以获得很多专门用于视图的扩展方法(HTML 助手会想到)。在 /Views/Web.Config 中为这个扩展类定义命名空间是有意义的。这样你就永远不会怀疑“为什么 IntelliSense 找不到我的 @Html.ImageLink() 方法??!”
【讨论】:
【讨论】: