C# 为什么更改连接字符串会引发只读错误?
我试图在C#代码中的web.config中动态设置连接字符串: 但它不允许我这样做并抛出以下错误:C# 为什么更改连接字符串会引发只读错误?,c#,asp.net,web-config,C#,Asp.net,Web Config,我试图在C#代码中的web.config中动态设置连接字符串: 但它不允许我这样做并抛出以下错误: The configuration is read only. 注意:如果可能的话,我不想实际保存到web.config。只需在内存中动态设置即可。如果我错了,请纠正我的错误,但我非常确定ConfigurationManager配置是只读的。您可以通过更改app.config的web.config来更改设置 它不是要动态设置的 var configuration = WebConfigurati
The configuration is read only.
注意:如果可能的话,我不想实际保存到web.config。只需在内存中动态设置即可。如果我错了,请纠正我的错误,但我非常确定ConfigurationManager配置是只读的。您可以通过更改
app.config
的web.config
来更改设置
它不是要动态设置的
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");
如何将web.config更改为app.config?ConfigurationManager不是动态的,而是静态的。如果需要动态配置,则必须使用不同的内容。请参阅以了解如何更改连接字符串。是否仅在内存中设置它?我不想实际更改文件。关于项目设置文件、web配置文件和连接字符串。记住,connectionstring只是一个字符串,可以很容易地(在使用者代码和设置文件中)与普通字符串交换。使用在使用者范围内声明的普通字符串。在项目设置中(应用程序范围连接字符串:在用户范围中创建一个新字符串变量。这样它就不是只读的。
string myNewConnectionString = ConfigurationManager.ConnectionStrings["ServerConnection"].ConnectionString;
myNewConnectionString.Replace("Data Source=Development", "Data Source=Production");