ASP.NET MVC 中的一个 Web.config,而不是每个 Views 文件夹的多个

One Web.config in ASP.NET MVC instead of multiple for each Views folder

我的 ASP.NET MVC 网络应用程序有 5 个区域。每个区域都有自己的 Views 文件夹,里面有自己的 Web.config。这使得 6 个配置文件与应用程序根目录中的主要 Web.config 一起。这使得它有点难以管理。

据我所知,这些配置做了两件事(至少在默认情况下):

1.) 将 Razor 主机工厂设置为默认包含选定的命名空间。

2.) 通过使用 HttpNotFoundHandler.

处理请求来阻止对 Views 文件夹中文件的直接访问

所有这些 Web.config 文件中的代码对我来说几乎是相同的,在我看来这不是管理这些配置的好方法。如果我添加更多区域或更精细地组织我的代码,我最终可能会得到超过 5 Web.config 个文件。为什么我需要这么多?一个还不够吗?

我的观点如下:

ad 1.) 不能将所有这些名称空间都导入应用程序根 Web.config 文件中一次或导入到 _ViewStart.cshtml 文件中吗?

ad 2.) 阻止对所有文件夹中的所有代码文件的访问然后使用相反的方法不是更有意义吗——即用 static 更改文件夹其中的文件(如 Assets 文件夹)使用 StaticFileHandler?原则上,对我来说,将 StaticFileHandler 允许读取的文件列入白名单似乎是一种更安全的方法,而不是指定 HttpNotFoundHandler.

应处理哪些文件

这可行吗?我错过了什么吗?有没有其他人遇到过太多 Views Web.config 文件的类似问题?

感谢您的回答。

只需在区域文件夹中放置一个 web.config 文件,然后从 5 个区域中的每个区域中删除单独的 web.config 文件。

ASP.NET 中的配置文件按照继承原则运行。 MSDN 文章 - ASP.NET Configuration File Hierarchy and Inheritance