.net - 如何在 .net 中以编程方式设置连接字符串配置?

标签 .net configuration connection-string

我想以编程方式设置连接字符串,绝对不更改任何配置文件/注册表项。

我有这段代码,但不幸的是它抛出了一个异常“配置是只读的”。

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/

相关文章:

c# - 了解没有线程的异步/等待

.net - IE7 后退按钮在 .NET 应用程序中丢失历史记录

.net - 我可以从 .NET 运行 DBCC CHECKDB 吗?

asp.net - 需要有关以下错误的帮助无法加载类型 'AccountWeb.Global'

c# - 在 ASP.NET MVC 5.1 中更改身份/成员身份验证的默认数据库

c# - 如何将运行时计算的非持久只读属性正确添加到 Linq To SQL 数据类

java - 如何使用 Spring Security 命名空间设置和配置 ProviderManager?

c# 数据库连接字符串通过 VPN

c# - 女士访问数据库

nginx - 将多个 nginx 配置组合成一个