Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么更改连接字符串会引发只读错误?_C#_Asp.net_Web Config - Fatal编程技术网

C# 为什么更改连接字符串会引发只读错误?

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

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

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

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");