我正在开发基于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
以下是我想象<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;。但是,我似乎无法将它们粘在一起以适用于我的情况。
我希望能够有一个课程(就像我现在用硬编码的字符串一样),我可以参考必要的属性(就像我一样)目前正在进行 - 然后代码可以在运行时从我上面描述的部分动态加载正确的设置。
与往常一样,提前感谢您的建议和帮助。
答案 0 :(得分:2)
我同意这些意见。通常这样做的方法是为每个环境部署不同的web.config。当您的部署组(或您)部署时,除非您有要推送的更改,否则您将部署所有 EXCEPT web.config。
在回答您的其他问题时,添加自定义部分并非易事。这是相当多的工作。自定义部分处理程序,需要一大堆配置元素类和一堆配置元素集合类...然后,如果你想要它&#34;工作&#34;正确地说,您还需要创建一个模式并使用IDE等注册该模式。
对于你的具体情况,我只是做正常的&#34;正常&#34;方式:)。