ASP.NET配置继承

时间:2010-05-02 22:22:49

标签: asp.net web-config

我有一个ASP.NET应用程序,它在web.config中定义了一个自定义配置部分。

最近我有一个客户想要部署两个应用程序实例(除了现有的生产应用程序之外还要进行测试)。

客户选择的配置是:

  • foo.com - 生产应用程序
  • foo.com/Testing - 测试应用程序

在这种情况下,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>

2 个答案:

答案 0 :(得分:1)

您尝试过使用location元素吗?不确定它是否有效,但值得一试。把它放在Testing项目的web.config中并试一试。

  <location path="." inheritInChildApplications="false">
    <MyApp setting="value" /> 
    ...
    </MyApp>    
  </location>

两个关于使用location元素的链接

http://www.aspdotnetfaq.com/Faq/how-to-disable-web-config-inheritance-for-child-applications-in-subfolders-in-asp-net.aspx

http://msdn.microsoft.com/en-us/library/b6x6shw7.aspx

答案 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>