2012-11-11 54 views
1

我在兩個不同的asp.net web應用程序中共享會話變量。使用web.config共享會話狀態不反射

我正在使用「StateServer」模式。

對於共享,我設置_appDomainAppId的的httpRuntime相同的用於使用反射的應用程序。在的Application_Start功能,這裏是我的代碼:

  string applicationName = "mysite" 

      FieldInfo runtimeInfo = typeof(HttpRuntime).GetField("_theRuntime", 
       BindingFlags.Static | BindingFlags.NonPublic); 
      HttpRuntime theRuntime = (HttpRuntime)runtimeInfo.GetValue(null); 
      FieldInfo appNameInfo = typeof(HttpRuntime).GetField("_appDomainAppId", 
       BindingFlags.Instance | BindingFlags.NonPublic); 
      appNameInfo.SetValue(theRuntime, applicationName); 

這裏是我的問題:我不想使用反射此。我想在web.config中處理這個。

有什麼辦法可以在web.config中設置_appDomainAppId?我在httpRuntime部分或其他地方找不到任何東西。

謝謝。

回答

0

_appDomainAppdId的訪問對應的是AppDomainAppId。初始化後沒有提供手動設置AppDomainAppId的方法。 (該屬性爲只讀。)

對於共享會話狀態,您需要使用不同的會話狀態提供程序。您可以在此選項,會話狀態服務,SQL或自定義選項之間進行選擇。

討論了用於共享狀態的SQL會話狀態提供者的黑客攻擊here。 (從2007年,但我在這看着最近(2017年),它仍然適用。)

建立一個自定義會話狀態提供討論here