我想以编程方式设置连接字符串,绝对不更改任何配置文件/注册表项。
我有这段代码,但不幸的是它抛出了一个异常“配置是只读的”。
ConfigurationManager.ConnectionStrings.Clear();
string connectionString = "Server=myserver;Port=8080;Database=my_db;...";
ConnectionStringSettings connectionStringSettings =
new ConnectionStringSettings("MyConnectionStringKey", connectionString);
ConfigurationManager.ConnectionStrings.Add(connectionStringSettings);
编辑: 问题是我有从配置中读取连接字符串的现有代码。因此,手动或通过资源设置配置字符串似乎不是有效的选项。我真正需要的是一种以编程方式修改配置的方法。
最佳答案
我在 post on my blog 中写过有关此内容的文章。诀窍是使用反射来插入值作为访问非公共(public)字段(和方法)的一种方式。
例如。
var settings = ConfigurationManager.ConnectionStrings[ 0 ];
var fi = typeof( ConfigurationElement ).GetField( "_bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic );
fi.SetValue(settings, false);
settings.ConnectionString = "Data Source=Something";
关于.net - 如何在 .net 中以编程方式设置连接字符串配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/360024/