gpt4 book ai didi

c# - 在运行时添加 ConnectionString App.Config 并在不重新加载应用程序的情况下显示?

转载 作者:行者123 更新时间:2023-11-30 21:23:13 29 4
gpt4 key购买 nike

我们有一个内部工具,我们需要提供以编程方式添加连接字符串然后重新加载此连接字符串而无需重新加载应用程序的能力。

我有点困惑,在这上面浪费了 2 天,准备放弃我做了以下事情

       var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
int initialCount = ConfigurationManager.ConnectionStrings.Count;
string connStringName = "TEST";
string serverName="Servedr";
string databaseName = "MyDb";
string userId="MyUseId";
string password="MyPassword";
var connectionStringBuilder = new SqlConnectionStringBuilder
{
DataSource = serverName,
InitialCatalog = databaseName,
UserID = userId,
Password = password
};


var csSetting = new ConnectionStringSettings(connStringName, connectionStringBuilder.ConnectionString, "System.Data.SqlClient");
var csSection = config.ConnectionStrings;
csSection.ConnectionStrings.Add(csSetting);
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("ConnectionStrings");

int finalCount = ConfigurationManager.ConnectionStrings.Count;

这应该行不?刷新部分等...有什么建议么?无需重启的解决方法?

谢谢

最佳答案

如何像下面的代码片段那样使用反射方法:

        var csSetting = new ConnectionStringSettings(connStringName, connectionStringBuilder.ConnectionString, "System.Data.SqlClient");

var readonlyField = typeof(ConfigurationElementCollection).GetField("bReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
readonlyField.SetValue(ConfigurationManager.ConnectionStrings, false);

var baseAddMethod = typeof(ConfigurationElementCollection).GetMethod("BaseAdd",
BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(ConfigurationElement) }, null);
baseAddMethod.Invoke(ConfigurationManager.ConnectionStrings, new object[] { csSetting });

readonlyField.SetValue(ConfigurationManager.ConnectionStrings, true);

int finalCount = ConfigurationManager.ConnectionStrings.Count;

关于c# - 在运行时添加 ConnectionString App.Config 并在不重新加载应用程序的情况下显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900350/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com