我的要求是,首次加载应用程序时,我想从数据库中获取有关连接字符串的信息,然后使用新连接字符串(从数据库中获取)进行下一次连接
这是可能的.net。?连接字符串写在web.config
文件
中
每当web.config更改时,是否需要重新启动IIS?
我试过了:
public ActionResult Index()
{
UpdateSetting("test", "123");
UpdateConnectionString("testcon", "12345");
return View();
}
/// <summary>
/// Updates the setting.
/// </summary>
/// <param name="key">The key.</param>
/// <param name="value">The value.</param>
public void UpdateSetting(string key, string value)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
if (config.AppSettings.Settings[key] == null)
{
config.AppSettings.Settings.Add(key, value);
}
else
{
config.AppSettings.Settings[key].Value = value;
}
config.Save();
ConfigurationManager.RefreshSection("appSettings");
}
/// <summary>
/// Updates the connection string.
/// </summary>
/// <param name="key">The key.</param>
/// <param name="value">The value.</param>
public void UpdateConnectionString(string key, string value)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
if (config.ConnectionStrings.ConnectionStrings[key] == null)
{
config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(key, value));
}
else
{
config.ConnectionStrings.ConnectionStrings[key].ConnectionString = value;
}
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
}
此函数将添加一个新的连接字符串,但是还有其他方法,以便我不想重新启动应用程序吗?
答案 0 :(得分:0)
应用程序设置是静态的,不应在运行时修改。我不知道为什么你必须在配置文件中存储连接,这没有意义。尝试其他解决方案,在开始之前通过脚本更新设置或将设置存储在另一个中,或者每次只检索。
答案 1 :(得分:0)
有多种方法可以实现这一目标。
如果您正在使用DI,则可以将连接字符串工厂注册为单例,然后尝试在任何地方获取连接字符串。它只会为应用程序获取一次。
更新您的UpdateConnectionString方法以将检索到的值缓存在某个静态变量中(尽管这不是很好的方法),然后在检索值之前检查缓存。如果cache不为null,请使用其值。