我正在使用一个Windows应用程序,其中包含位于多个文件夹中的配置文件(dev.config
,prod.config
,uat.config
),例如dev
,{{1} },prod
。我希望根据特定文件夹中的特定条件获取特定配置文件值,例如uat
,并且我想在根connectionstrings
文件中添加相应的connectionstrings
。然后我需要根据添加的连接字符串获取数据。任何人都可以帮我吗?
答案 0 :(得分:0)
可以轻松完成的工作是外化您的连接字符串(我们倾向于将它们放入App_Data\config
,因为该文件夹受IIS保护并且尝试浏览时,将返回该文件夹中的任何内容。)
所以在 main web.config
中,你会有这样的事情:
<connectionStrings configSource="App_Data\config\dev.config" />
然后你去测试,你只需将其改为
<connectionStrings configSource="App_Data\config\uat.config" />
在您的个人配置文件中,您只有一个部分:
dev.config
:
<connectionStrings>
<add name="SomeName"
connectionString="server=.;database=test;integrated Security=SSPI;"
providerName="System.Data.SqlClient" />
......
</connectionStrings>
答案 1 :(得分:0)
您可以使用ExeConfigurationFileMap和ConfigurationManager.OpenMappedExeConfiguration()基于条件加载自定义配置文件。
ExeConfigurationFileMap configFileMap = ExeConfigurationFileMap("path/to/custom.config");
System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None)
当您拥有配置对象时,您可以选择所需的给定部分,例如connectionstrings
。
ConnectionStringsSection connectionStrings = config.ConnectionStrings;
然后,您可以根据所需的条件加载您想要的任何配置文件,并挑选出您喜欢的部分。
有关ConnectionStringsSection with a short example (MSDN)的更多信息。