我正在处理的ASP.NET Web应用程序正在使用多个web.config文件。一个在Web根文件夹中,然后我们有另一个名为“admin”的项目(* .csproj),该项目位于包含其自己的web.config文件的应用程序的Web根目录下的嵌套文件夹中。 辅助web.config文件中使用(或未使用)的ASP.NET配置(或其他配置)是什么?我正在升级Telerik的Rad Controls并添加一些新功能。但是,这些控件都不适用于主Web应用程序。它们都适用于管理项目页面。所以我不想在main / primary web.config文件中添加一些东西,如果我能帮忙的话。如果您在使用辅助web.config时也可以共享任何陷阱(或限制),请执行!
答案 0 :(得分:1)
web.config
文件基本上通过层次布局合并,因为所有配置文件都是。请考虑以下事项:
machine.config (1)
-> web.config (2)
-> applicationHost.config (3)
-> web.config (4)
-> web.config (5)
.NET中的配置机制允许在配置层次结构的各个阶段覆盖(或锁定)配置元素,其中:
machine.config
是机器级配置 - 此处的配置适用于所有 .NET应用程序。web.config
是机器级Web配置 - 其中配置了大多数ASP.NET模块/处理程序,并且配置应用于所有 ASP.NET应用程序。applicationHost.config
是IIS7根网站配置 - 当应用程序池在集成模式下运行时,将使用模块/处理程序配置项。web.config
是应用程序级Web配置。此处的配置适用于应用程序和所有子文件夹/虚拟文件夹。web.config
是虚拟文件夹级Web配置。此处的配置应用于当前虚拟文件夹和所有子文件夹/虚拟文件夹。如果您在经典管道模式下运行IIS< 7或IIS7,则applicationHost.config
文件不会用作合并配置的一部分。
.NET配置框架将在层次结构中合并配置,在必要时遵守覆盖和锁定的配置元素。
在您的情况下,我认为您需要在IIS应用程序中的虚拟文件夹级别应用配置。
答案 1 :(得分:0)
使用两个Web.configs。根文件夹中的Web.config文件将影响其下的所有内容;根文件夹的子目录中的Web.config也会影响它下面的所有内容。如果两个Web.config文件之间存在任何冲突,则应用程序可能会抛出异常(例如,如果在两个Web.config文件中添加具有相同值的应用程序密钥)。
如果您的Telerik控件仅用于子目录中的项目,那么您应该将更改添加到该子目录中的Web.config文件,而不是根目录。