Web.config中的自定义配置元素集合

介绍

我正在开发一个基于C#ASP.NET的Web应用程序。

我一直在研究用Web.config文件中的子元素创建一个“自定义配置”部分,并且当涉及到消费数据中的键/值时,我遇到了一些障碍。

我似乎围绕着圈子,而且我不知道如何解决我遇到的问题。


情况

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

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

WebApp目前使用硬编码来使用这些连接字符串之一 - 如果我需要更改使用哪一个,我需要重新编译。


期望的功能

我想在Web.config定义一个部分,比如说DbSettings

因此,我希望能够为DbSetting定义一些子元素,我可以在其中定义dbConnectionNamefoobar等属性。

例如:

<dbSettings>
    <dbSetting key="DbSetting1"
                     dbConnectionName="connectionOne"
                     foo="fooOne"
                     bar="barOne" />
   ... and so on
</dbSettings>

然后,也许在<appSettings>部分中,定义我想使用哪些DbSetting的元素来获取设置:

<appSettings>
    <add name="dbSettingsKey" value="DbSetting1" />
</appSettings>

所需的Web.config部分

这里是我想象我的Web.config文件看起来像一个更完整的例子:

连接字符串

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

应用设置

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

DbSettings (自定义部分)

<dbSettings>
    <dbSetting key="DbSetting1"
                     dbConnectionName="connectionOne"
                     foo="fooOne"
                     bar="barOne" />
    <dbSetting key="DbSetting2"
                     dbConnectionName="connectionTwo"
                     foo="fooTwo"
                     bar="barTwo" />
    <dbSetting key="DbSetting3"
                     dbConnectionName="connectionThree"
                     foo="fooThree"
                     bar="barThree" />
</dbSettings>

我的问题...

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

我读过关于“创建自己的自定义部分”的负载,并且同样“创建自定义配置集合”。 但是,我似乎无法将它们粘合在一起来申请我的处境。

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

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


我同意评论。 通常这样做的方法是为每个环境部署一个不同的web.config。 部署组(或您)部署时,除非您有更改推送,否则您将部署除web.config之外的所有内容。

在回答你的其他问题时,添加一个自定义部分不是微不足道的。 这是相当多的工作。 需要大量配置元素类和一些配置元素集合类的自定义节处理程序......然后,如果您希望它能够“正常”工作,则还需要创建一个模式并将其注册到IDE中,等等

对于你的具体情况,我只是做“正常”的方式:)。

链接地址: http://www.djcxy.com/p/42593.html

上一篇: Custom config elements collection in Web.config

下一篇: iPhone webapp design