【问题标题】:Why does changing connection string throw read only error?为什么更改连接字符串会引发只读错误?
【发布时间】:2012-12-06 19:00:19
【问题描述】:

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

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

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

The configuration is read only.

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

【问题讨论】:

标签: c# asp.net web-config


【解决方案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");

【讨论】:

  • 是否只能在内存中设置它?我不想实际更改文件。
  • 关于项目设置文件、网络配置文件和连接字符串。请记住,连接字符串只是一个字符串,可以很容易地与普通字符串交换(在消费者代码和设置文件中)。使用在消费者范围内声明的普通字符串。在项目设置中(应用程序范围连接字符串:在 USER 范围内创建一个新的字符串变量。然后它不是只读的。
【解决方案2】:

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

它不是动态设置的。

【讨论】:

  • 如何更改 app.config 的 web.config?
  • ConfigurationManager 不是动态的,而是静态的。如果你想要动态配置,你必须使用不同的东西。
猜你喜欢
  • 2023-02-18
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 2021-01-28
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多