gpt4 book ai didi

c# - 是否可以在运行时修改配置 ConnectionStrings?

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:42 25 4
gpt4 key购买 nike

是否可以在运行时修改 app.config/web.config 中定义的连接字符串?我想根据运行应用程序/网站的机器使用不同的配置文件(当然,仅用于调试目的。我们将在部署时使用常规配置文件)。

我可以编写 AppSettings,但不会编写 ConnectionStrings(据我所知)。或者我可以吗?

最佳答案

是的,这是可能的,但 AFAIK 只能通过反射。以下代码应该可以满足您的需要(请阅读下面的用法):

public static string SetConnectionString(Type assemblyMember,
Type settingsClass,
string newConnectionString,
string connectionStringKey)
{
Type typSettings = Type.GetType(Assembly.CreateQualifiedName(assemblyMember.Assembly.FullName, settingsClass.FullName));

if (typSettings == null)
{
return null;
}

PropertyInfo prpDefault = typSettings.GetProperty("Default", BindingFlags.Static | BindingFlags.Public);

if (prpDefault == null)
{
return null;
}

object objSettings = prpDefault.GetValue(null, null);

if (objSettings == null)
{
return null;
}

// the default property, this[], is actually named Item
PropertyInfo prpItem = objSettings.GetType().GetProperty("Item", BindingFlags.Instance | BindingFlags.Public);

if (prpItem == null)
{
return null;
}

object[] indexerName = { connectionStringKey };
string oldConnectionString = (string)prpItem.GetValue(objSettings, indexerName);

prpItem.SetValue(objSettings, newConnectionString, indexerName);

return oldConnectionString;
}

assemblyMember 是调用类型
settingsClass 是你的设置类的类型
newConnectionString 是要设置的完整字符串
connectionStringKey 是您在应用设置中定义的连接字符串的名称

您应该在应用启动后尽快调用此方法,最好是在 Main() 方法中。

关于c# - 是否可以在运行时修改配置 ConnectionStrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665392/

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