2017-02-18 2 views
0

웹 사이트가 있고이 도메인을 가리키는 다중 도메인이 있습니다. 내 웹 사이트 코드에서 웹에 액세스 할 때 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"); 

그러나 Session [ "Key"]처럼 연결 문자열이 변경되기 전에 모든 세션 변수 초기화가 손실되었습니다. 어떻게 할 수 있지만 내 세션 변수를 죽일 수 있습니까?.

답변

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

제 orher 질문입니다. URL 예 "www.abc.com/abc"를 웹 사이트 'www.abc.com'으로 재 연결할 수 있습니까? –

+0

예, 라우팅을 사용하여 URL을 리디렉션 할 수 있습니다. –

관련 문제