如果您尝试在运行时编辑 web.config 中的连接字符串,请查看WebConfigurationManager。
如果您只是想在运行时修改配置以注入连接字符串,那么您就不走运了。ConfigurationManager 对象树旨在直接反映配置文件,如果您能够更改该状态将不一致。
我建议创建一个简单的外观类,您可以使用它来检索您的连接字符串。这样,您可以让外观从您的动态集合中返回一个连接字符串,或者如果一个不存在,那么它可以从 ConfigurationManager 中获取它。
class ConnectionStringProvider
{
Dictionary<string, System.Configuration.ConnectionStringSettings> _localStrings = new Dictionary<string, System.Configuration.ConnectionStringSettings>();
public void AddLocalConnectionString(string name, string connstring)
{
System.Configuration.ConnectionStringSettings cs = new System.Configuration.ConnectionStringSettings(name, connstring);
_localStrings.Add(name, cs);
}
public void RemoveLocalConnectionString(string name)
{
_localStrings.Remove(name);
}
public System.Configuration.ConnectionStringSettings this[string name] {
get
{
return _localStrings.ContainsKey(name) ? _localStrings[name] : System.Configuration.ConfigurationManager.ConnectionStrings[name];
}
}
}
或者,您总是可以更重一些并使用 Enterprise Library Configuration Block 之类的东西。