Web.config中的自定义配置元素集合 - 使用键进行选择

时间:2016-08-30 21:38:34

标签: c# web-config configurationsection

简介

我正在开发基于C#ASP.NET的WebApp。

我一直在研究创建一个"自定义配置"在Web.config文件中包含子元素的部分,在使用数据中的键/值时,我遇到了一些麻烦。

我好像是围成一圈,我不知道如何解决我遇到的问题。

情况

我在Web.Config部分的<connectionStrings>文件中定义了几个不同的连接字符串。它们用于开发,测试和实时数据库。

<connectionStrings>
    <add name="connectionOne" connectionString="..." providerName="..." />
    <add name="connectionTwo" connectionString="..." providerName="..." />
    <add name="connectionThree" connectionString="..." providerName="..." />
</connectionStrings>

WebApp目前硬编码为使用其中一个连接字符串 - 如果我需要更改要使用的连接字符串,我需要重新编译。

期望的功能

我想在Web.config中定义一个部分,让我们说DbSettings

在那,我希望能够定义一些子元素,让我们说DbSetting s,我可以在其中定义dbConnectionName,{{1 }},foo等作为属性。

例如:

bar

然后,也许在<dbSettings> <dbSetting key="DbSetting1" dbConnectionName="connectionOne" foo="fooOne" bar="barOne" /> ... and so on </dbSettings> 部分中,定义我想要使用哪些<appSettings>个元素来获取设置:

DbSetting

所需的Web.config部分

以下是我想象<appSettings> <add name="dbSettingsKey" value="DbSetting1" /> </appSettings> 文件的更完整示例:

连接字符串

Web.config

应用设置

<connectionStrings>
    <add name="connectionOne" connectionString="..." providerName="..." />
    <add name="connectionTwo" connectionString="..." providerName="..." />
    <add name="connectionThree" connectionString="..." providerName="..." />
</connectionStrings>

DbSettings (自定义栏目)

<add key="dbSettingsKey" value="DbSetting1" /> // or 2, or 3 etc.

我的问题......

我将如何在C#代码中获得所需的功能?

我已经阅读过#34;创建自己的自定义部分&#34;,同样地&#34;创建自定义配置集合&#34;。但是,我似乎无法将它们粘在一起以适用于我的情况。

我希望能够有一个课程(就像我现在用硬编码的字符串一样),我可以参考必要的属性(就像我一样)目前正在进行 - 然后代码可以在运行时从我上面描述的部分动态加载正确的设置。

与往常一样,提前感谢您的建议和帮助。

1 个答案:

答案 0 :(得分:2)

我同意这些意见。通常这样做的方法是为每个环境部署不同的web.config。当您的部署组(或您)部署时,除非您有要推送的更改,否则您将部署所有 EXCEPT web.config。

在回答您的其他问题时,添加自定义部分并非易事。这是相当多的工作。自定义部分处理程序,需要一大堆配置元素类和一堆配置元素集合类...然后,如果你想要它&#34;工作&#34;正确地说,您还需要创建一个模式并使用IDE等注册该模式。

对于你的具体情况,我只是做正常的&#34;正常&#34;方式:)。