【问题标题】:Multiple appSettings section in web.configweb.config 中的多个 appSettings 部分
【发布时间】:2011-08-26 10:19:29
【问题描述】:

这有可能吗?例如,通过命名 appSettings 部分,或将 appSettings 嵌套在其他命名部分中。

我想实现以下目标:

<section name="development">
    <appSettings>
    </appSettings>
</section>

<section name="test">
    <appSettings>
    </appSettings>
</section>


string connectionString 
   = ConfigurationManager.GetSection("test").AppSettings["connectionString"];

这是什么模式?

【问题讨论】:

  • 你想解决什么问题?
  • @lance 我们有多个团队使用同一个应用程序,但他们每个人都需要自己的设置,因为他们都有自己的数据服务器。

标签: .net design-patterns configuration web-config appsettings


【解决方案1】:

假设您在部署到不同环境时只是简单地应用不同的连接字符串(或操作其他 web.config 设置),那么您正在寻找的是config transforms。这是处理这种情况的最快、最简单和正确的方法。

【讨论】:

    【解决方案2】:

    appSetting 元素支持“文件”属性,它允许您指定文件名,以便放置键/值。

    这让您与团队共享您在 user.config 中指定的值。

    认为,如果您在父配置文件和子配置文件中定义一个键,则子值将被忽略,而父值将被尊重。

    Further Reading

    【讨论】:

      【解决方案3】:

      您试图实现的目标不会以这种方式发挥作用。为此,“最佳”(恕我直言)技术是创建 3 个文件 app(或 web).config dev.config 和 test.config(可能还有 release.config)。然后在解决方案属性中,您可以执行预构建命令以复制适当的 .config 文件,使其根据构建类型变为“活动”,并将其放入 app.config(或 web.config)中。

      你可以了解更多关于这个http://msdn.microsoft.com/en-us/library/aa983464%28v=vs.80%29.aspxhttp://msdn.microsoft.com/en-us/library/ke5z92ks.aspx

      Scott Hanselman 有一篇关于这种方法的精彩文章:http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx

      所以你需要在运行时这样做:

      如果您想在运行时获得不同的设置,那么可能最有效的方法是建立一个命名约定,例如:

      <appSettings>
         <add name="fearofawhackplanet.connectionString" value="your connection string" />
         <add name="cosCallis.connectionString" value="my connection string" />
      </appSettings>
      

      我相信你可以从那里看到如何在运行时管理它以获得你需要的键/值。

      【讨论】:

      • 不幸的是我需要能够在运行时切换
      【解决方案4】:

      我发现自定义部分对此最为灵活。请参阅 MSDN 中的“configSections 元素(常规设置架构)”。

      <sampleSection serverInstanceLabel1="alex" setting1="Value1"
                     setting2="value two"/> 
      

      所以,在你的情况下,你可以有这样的部分:sampleSection,sampleSection1,...

      【讨论】:

        猜你喜欢
        • 2013-05-09
        • 1970-01-01
        • 2011-12-30
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 2012-07-31
        相关资源
        最近更新 更多