[英]Reload web.config after updating connectionstring programmatically in C#
I have created Connectionstring in web.config at run time. 我在运行时在web.config中创建了Connectionstring。 Now I am saving some data into my DB but it is still reading old Connectionstring.
现在,我将一些数据保存到数据库中,但仍在读取旧的Connectionstring。 How can I solve this?
我该如何解决? below is my code:
下面是我的代码:
public string EditConnectionString(string userId, string password, string host, string dbName)
{
try
{
System.Configuration.Configuration Config = WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection conSetting = (ConnectionStringsSection)Config.GetSection("connectionStrings");
string providerName = "System.Data.EntityClient";
string conString = @"metadata=res://*/OWordpress.csdl|res://*/OWordpress.ssdl|res://*/OWordpress.msl;provider=System.Data.SqlClient;provider connection string=" + "\"data source=" + host + ";initial catalog=" + dbName + ";user id=" + userId + ";password=" + password + ";MultipleActiveResultSets=True;App=EntityFramework\"";
ConnectionStringSettings StringSettings = new ConnectionStringSettings("OWordpressContainer", conString,providerName);
conSetting.ConnectionStrings.Remove(StringSettings);
conSetting.ConnectionStrings.Add(StringSettings);
Config.Save(ConfigurationSaveMode.Modified);
return MessageFamily.Success.ToString();
}
catch(Exception ex)
{
return ex.Message.ToString();
}
}
After creating Connectionstring I am saving some data as below but it still read old connectionstring values: 创建了连接字符串后,我正在保存一些数据,如下所示,但它仍读取旧的连接字符串值:
public string SaveDbInfo(string userId, string password, string host, string dbName)
{
try
{
var optionEntity = new Options();
optionEntity.key = "DBInfo";
optionEntity.value = "{userId:'" + userId + "',password:'" + password + "',host:'"+host+"',dbName:'"+dbName+"'}";
objContext.Options.Add(optionEntity);
objContext.SaveChanges();
return MessageFamily.Success.ToString();
}
catch(Exception ex)
{
return ex.Message.ToString();
}
}
I solve this issue by using EntityConnectionStringBuilder
我通过使用
EntityConnectionStringBuilder
解决了这个问题
var ecsBuilder = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["OWordpressContainer"].ToString());
var sqlCsBuilder = new SqlConnectionStringBuilder(ecsBuilder.ProviderConnectionString)
{
InitialCatalog = dbName,
UserID=userId,
DataSource=host,
Password=password
};
var providerConnectionString = sqlCsBuilder.ToString();
ecsBuilder.ProviderConnectionString = providerConnectionString;
string contextConnectionString = ecsBuilder.ToString();
using (var db = new DbContext(contextConnectionString))
{
OWordpressContainer objContext = new OWordpressContainer(contextConnectionString);
var optionEntity = new Options();
optionEntity.key = "DBInfo";
optionEntity.value = "{userId:" + userId + "',password:'" + password + "',host:'" + host + "',dbName:'" + dbName + "'}";
objContext.Options.Add(optionEntity);
objContext.SaveChanges();
}
更改连接字符串后,尝试以下代码,让我知道它是否有帮助-
ConfigurationManager.RefreshSection("connectionStrings");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.