2017-02-18 9 views
0

私はウェブサイトを持ち、これに対して複数のドメインポイントを持っています。 私のウェブサイトのコードでは、Webへのアクセスを使用する際に、ConfigurationManagerを使用して、すべてのドメインのConnect文字列ベースを変更します。コードは 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"); 

を怒鳴るしかし、私は([「キー」]セッションのような)接続文字列を変更する前に、すべてのセッション変数の初期化を失いました。 どうすればよいですか?セッション変数をキップできますか?

答えて

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

私のプロジェクトではEFを使用していますが、私のプロジェクトでは接続文字列のみが含まれています。 –

+0

私のorther質問。 URL例 "www.abc.com/abc"をWebサイト「www.abc.com」にリダイレクトすることができます –

+0

はい、ルーティングを使用してURLをリダイレクトできます。 –

関連する問題