web.config中的多个appSettings部分

时间:2011-05-16 12:44:08

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

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

我希望实现以下内容:

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

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


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

这是什么模式?

4 个答案:

答案 0 :(得分:5)

假设你要做的只是在部署到不同的环境时应用不同的连接字符串(或操纵其他web.config设置),你要找的是config transforms。这是处理这种情况的最快,最简单和正确的方式。

答案 1 :(得分:3)

答案 2 :(得分:1)

你想要实现的目标不会这样。 “最佳”(IMHO)技术是创建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>

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

答案 3 :(得分:0)

我发现自定义部分最灵活。请参阅&#34; configSections元素(常规设置架构)&#34;在MSDN。

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

因此,在您的情况下,您可以使用以下部分:sampleSection,sampleSection1,...