使用ConfigurationManager.RefreshSection()时丢失的Session变量

时间:2017-02-18 05:00:46

标签: c# asp.net session configurationmanager

我有一个网站,并且有多个域名指向此。 在我的网站代码中,当使用访问web时,我使用ConfigurationManager来更改每个域的连接字符串。代码吼叫

     Session["Key"] = "KeyID"; 
     var connectionStringsSection = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
     string fullConnect = "New String Connnect";
     connectionStringsSection.ConnectionStrings["Name"].ConnectionString
        = fullConnect;
     configuration.Save();
     ConfigurationManager.RefreshSection("connectionStrings");

但是在连接字符串更改之前我丢失了每个Session变量初始化(如Session [“Key”])。 我怎么能这样做但是我的会话变量?

1 个答案:

答案 0 :(得分:1)

如果更新Web.config文件中的连接字符串,那么会话肯定会破坏。要防止这种情况,请在Web.config文件中设置多个连接字符串,无论您需要哪个连接字符串,都可以在.cs文件中进行管理。

 <connectionStrings>
    <add name="String1"
         connectionString="CONNECTION STRING1"
         providerName="System.Data.SqlClient" />
    <add name="String2"
         connectionString="CONNECTION STRING2"
         providerName="System.Data.SqlClient" />
</connectionStrings>

您可以使用“ForEach”循环在代码中建立连接。

foreach (ConnectionStringSettings cstring in System.Configuration.ConfigurationManager.ConnectionStrings)
{
    //use cstring.name
}