2012-12-06 53 views
0

我想动态设置连接字符串在web.config中的C#代码:为什么更改连接字符串抛出只读错误?

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

但它不是让我这样做,并抛出以下错误:

The configuration is read only. 

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

+1

请参见[这个问题](HTTP:// stackoverflow.com/questions/2260317/change-a-web-config-programmatically-with-c-sharp-net)了解如何更改连接字符串。 – zimdanen

回答

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

无论如何只能将它设置在内存中吗?我不想实际进行文件更改。 – Bill

+0

关于项目设置文件,Web配置文件和连接字符串。请记住,连接字符串只是一个字符串,并且可以使用普通字符串轻松交换(在消费者代码和设置文件中)。使用在消费者范围内声明的普通字符串。在项目设置中(应用程序范围连接字符串:在USER范围内创建一个新的字符串变量,然后它不是只读的。 – netfed

0

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

这并不意味着要动态设置。

+0

如何更改app.config的web.config? – Bill

+0

您编辑文件,它是一个XML文件。 –

+0

但它不会是动态的... – Bill