我有一个ASP.NET应用程序,它在web.config中定义了一个自定义配置部分。
最近我有一个客户想要部署两个应用程序实例(除了现有的生产应用程序之外还要进行测试)。
客户选择的配置是:
在这种情况下,ASP.NET配置引擎决定将foo.com/web.config中的设置应用到foo.com/Testing/web.config。
值得庆幸的是,这导致配置错误,因为该部分在第二级重新定义,而不是给人以错误的印象,即两个Web应用程序是隔离的。
我想要做的是指定我的配置部分不是继承的,必须为任何需要它的Web应用程序重新定义但我无法找到方法来执行此操作。
我的web.config结束了这样的事情
<configuration>
<configSections>
<section name="MyApp" type="MyApp.ConfigurationSection"/>
</configSections>
<MyApp setting="value" />
<NestedSettingCollection>
<Item key="SomeKey" value="SomeValue" />
<Item key="SomeOtherKey" value="SomeOtherValue" />
</NestedSettingCollection>
</MyApp>
</configuration>
答案 0 :(得分:1)
您尝试过使用location元素吗?不确定它是否有效,但值得一试。把它放在Testing项目的web.config中并试一试。
<location path="." inheritInChildApplications="false">
<MyApp setting="value" />
...
</MyApp>
</location>
两个关于使用location元素的链接
答案 1 :(得分:0)
在/ testing下的web.config中,执行以下操作:
<configuration>
<configSections>
<remove name="MyApp"/> <===========
<section name="MyApp" type="MyApp.ConfigurationSection"/>
</configSections>
<MyApp setting="value" />
<NestedSettingCollection>
<Item key="SomeKey" value="SomeValue" />
<Item key="SomeOtherKey" value="SomeOtherValue" />
</NestedSettingCollection>
</MyApp>
</configuration>