从子应用程序卸载web.config文件的一部分

时间:2011-12-16 15:11:04

标签: .net inheritance web-config

我们在IIS中配置了一个大型内容管理系统作为主站点。我们还有一些独立的应用程序在IIS 7.5下配置为应用程序。我们遇到的问题是子应用程序从父应用程序继承web.config文件,即使它们是完全独立的应用程序并且在没有配置设置的旁边共享。理想情况下,我们希望阻止子应用程序继承web.config文件。这可能吗?

如果没有,我们想告诉子应用程序不要继承master web.config文件的一部分。我们已经尝试编辑子web.config文件并将指令添加到配置文件中,但这似乎不起作用。

据我所知,我们可以修改父web.config文件以添加指令以有效地限制继承;但是我们对这样做犹豫不决,因为我们不确定这将如何影响CMS。有问题的web.config文件也大约有1000行,我们不确定我们需要做多少改变。当然,我们可以继续使用此解决方案并进行彻底测试,但我宁愿找到一个不需要修改父应用程序的解决方案。

我们还尝试更新子web.config文件以手动删除父web.config的某些元素,并且我们得到了混合结果。我们可以卸载HTTP处理程序和类似的东西,但我们似乎无法卸载任何对App_Code文件夹的引用。

简而言之,是否可以让子应用程序不继承web.config文件的任何部分?如果没有,是否可以覆盖或强制孩子忽略父web.config文件中的设置?

由于

戴夫

3 个答案:

答案 0 :(得分:11)

除了使用<clear/>或覆盖子web.config中的设置外,还可以在父web.config中结合使用inheritInChildApplications设置。

示例:

<location path="." inheritInChildApplications="false"> 
  <system.web>     
    <!-- ... -->
  </system.web>
</location>

您可以围绕整个<system.web>或仅围绕特定部分包装该位置。

一些链接了解更多信息:

答案 1 :(得分:1)

这是一种解决方法,但我们对polygot应用程序所做的是反转代理在父web.config下无法生存的任何内容。在大多数情况下,比打斗更容易。

现在,这个内联网应用程序听起来可能正在使用Windows身份验证,如果是这样,将无法正常工作,因为您无法反向代理Windows身份验证。

答案 2 :(得分:0)

在部分的开头添加<clear/>以删除继承的设置。