如何停止的继承 Web.Config中(How to stop inheritance of

2019-08-18 08:51发布

你根本无法使用<location path="." inheritInChildApplications="false"> <location path="." inheritInChildApplications="false">在你的web.config的某些部分,以告诉它忽略某些部分的继承(如果你尝试把它的部分,你会得到错误,如“inheritInChildApplications属性未声明”等第四其中,它不支持)。

例如之前或里面,你不能用它<configSections> 例如,你可以包装你<system.web>中的位置标签标记,但我需要停止的任何继承在<configSections>我不明白的方式来做到这一点。

我的子应用程序继承了一些,我的父应用程序的Web配置在IIS 7中的树相同的配置设置。 我看没有办法把一个<clear/>无论是在configSecion标签,因为它是一个无效的标签,如果你尝试添加它。

你怎么知道它忽略节?

Answer 1:

这同一个问题被问上多次SO以及许多其他论坛和答案是或多或少相同,不,你不能使用位置/透明/移除configsection。

微软甚至其线程答复如下。

发布Microsoft在2009年7月23日在5:40 PM

 <clear /> and <remove />

从来没有为configSections和因难以sectionGroups实施涉案试图合并相同的部分,处理程序和部分群体的不同的定义。

我们考虑增加此类功能的VS 2010的发布,但我们决定不这样做有两个原因。

第一个是将额外的复杂性带来,在很大程度上是因为节处理和部分基团被用来引导配置系统。 其结果是,允许在自举配置系统的中间合并语义是解决一个非平凡的问题。

第二个原因是,通常节处理和部分组定义在两个不同的地方是由-一组初始注册的向上在根配置文件,然后添加剂设置在应用程序级别的web.config的注册。 这并不意味着如果开发者希望修改处理程序的定义是无效的场景 - 它只是一个可能性低的情况。 感谢您抽出宝贵的时间,虽然通过连接提交您的建议!


看看这个SO线程,简单的状态避免使用有冲突的部分群体。

然而,Nairman建议如下,

我不知道,你可以在一个子文件夹不同的定义相同的部分; 你能有这样的子文件夹中的独立虚拟应用程序,在这种情况下它不会继承任何的父项的设置; 在这种情况下,它也将执行在自己的应用程序池; 如果你没有是InProc的依赖,这是一个选项,以及

如何防止为“configSections” web.config文件继承?



Answer 2:

信用为这本StackOverflow的答案: “项已经添加” -两个单独的应用程序池

这里包括,所以我没有得到在抱怨...

编辑C:\ WINDOWS \ SYSTEM32 \ INETSRV \设置\的applicationHost.config添加

enableConfigurationOverride="false"

对于每一个应用程序池不应该从父继承web.config设置的。 这体现了自己对我来说,如下所示:

有重复的“System.Web.Extensions程序/脚本/ scriptResourceHandler”定义的部分

如果你想运行的应用程序.NET4(即使是作为单独的应用程序和池)一.NET2父应用程序下,那么这似乎是唯一可行的方案。

作为的applicationHost.config包括该属性的示例应用程序池条目:

<add name="MyApplicationPool" autoStart="true" managedRuntimeVersion="v4.0" enableConfigurationOverride="false">
<processModel identityType="ApplicationPoolIdentity" />
</add>


Answer 3:

你可以做的是使该文件夹的应用程序,这样做就可以了反向代理(使用IIS 7的URL重写模块)到一个内部网站,它应该保持CONFIGS完全分开。

例如,一种我们的用于代理重定向是:匹配使用通配符*重写URL图案http://127.0.0.1:8080/ {R:1}

一个可怕的想法,说实话(我讨厌做事情的方法脏),你应该能够告诉IIS你想对孩子应用程序的配置一个清白。



文章来源: How to stop inheritance of in Web.Config