这有可能吗?例如,通过命名appSettings部分,或嵌套在其他命名部分中的appSettings。
我希望实现以下内容:
<section name="development">
<appSettings>
</appSettings>
</section>
<section name="test">
<appSettings>
</appSettings>
</section>
string connectionString
= ConfigurationManager.GetSection("test").AppSettings["connectionString"];
这是什么模式?
答案 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.aspx 和http://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,...