为什么更改连接字符串会抛出只读错误?

时间:2012-12-06 19:00:20

标签: c# asp.net web-config

我正在尝试使用C#代码在web.config中动态设置连接字符串:

ConfigurationManager.ConnectionStrings["ServerConnection"].ConnectionString = "blah";

但它不允许我这样做并抛出以下错误:

The configuration is read only.

注意:如果可能的话,我不想实际保存到web.config。只需在内存中动态设置它。

2 个答案:

答案 0 :(得分:1)

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["ServerConnection"].ConnectionString = "Data Source=...";
configuration.Save();

如果您不想更改实际的web.config,则可以使用;

using(OleDbConnection conn = new OleDbConnection("Type here your connection string"))
{
     // Execute my code
}

如果您想保留一些数据然后进行更改,您可以将连接字符串的值复制到另一个字符串。

string myNewConnectionString = ConfigurationManager.ConnectionStrings["ServerConnection"].ConnectionString;
myNewConnectionString.Replace("Data Source=Development", "Data Source=Production");

答案 1 :(得分:0)

如果我错了,请纠正我,但我很确定ConfigurationManager配置是只读的。您可以通过更改web.config的{​​{1}}来更改设置。

这并不意味着动态设置。