如何以编程方式覆盖Web.config中的值

时间:2013-03-08 15:56:45

标签: c# .net web-config config

我正在与一群人开发一个Web应用程序,我们都有不同的连接字符串到我们的数据库。

连接字符串存储在我们的web.config中,这是受源代码控制的,有时人们用他们的连接字符串检查他们的web.config,这会扰乱我的环境。

我想使用一个环境变量,如果存在,将覆盖我的web.config中的连接字符串。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

正如其他人在您的评论中指出的那样,没有简单的方法可以阻止人们更改源代码控制下的任何文件。但是,您可以做的是将 web.config 文件更改为:

<connectionStrings configSource="Configs\ConnectionStrings.config" > </connectionStrings>

然后有一个名为配置的文件夹,其中有一个名为 ConnectionStrings.config 的文件,内容如下:

<connectionStrings>
  <add name="YourVersionHere" ... />
</connectionStrings>

通过这种方式,您可以检查 web.config 文件,而无需更改连接字符串(现在它保存在单独的文件中)。当然,这不会让你离开监狱,因为他们可以覆盖 ConnectionStrings.config 文件,但它确实允许你打破你的配置,所以你总是可以与所有的最新设置但永远不要在 ConnectionStrings.config 文件上进行GET。

这同样适用于AppConfig等。基本上允许您在较小的块中管理配置,而不是在一个地方管理。

您可以在此处获取更多信息:http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx

答案 1 :(得分:0)

是否可以将连接字符串从应用程序级web.config下移到系统级machine.config文件?