3

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

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

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

The configuration is read only.

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

4

2 回答 2

2
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");
于 2012-12-06T19:07:44.653 回答
0

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

它并不意味着动态设置。

于 2012-12-06T19:01:52.757 回答