2017-02-18 142 views
0

我有一个网站,并有多个域指向此。 在我的网站代码使用访问网络时,我使用ConfigurationManager来更改每个域的连接字符串基数。代码娄使用ConfigurationManager.RefreshSection()时丢失会话变量()

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

但我失去的连接字符串的变化(如会话[“钥匙”])之前,每个会话变量初始化。 我该如何做,但k我的会话变量?

回答

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 
} 
+0

Tks你的答案,但我的项目使用EF所以我只chage包含连接字符串。 –

+0

我还有其他问题。我可以重新排列URL示例“www.abc.com/abc”到网站“www.abc.com” –

+0

是的,您可以使用路由重定向URL。 –