2016-02-16 35 views
0

我正在努力解決以下問題。安裝:在.NET 4HttpContext.Session爲空應用程序請求路由(ARR)

  • ASP.NET Web表單應用程序
  • 會話狀態的狀態服務。
  • 三個網絡服務器。所有這三個主機的網絡應用程序。其中一位還擔任ARR控制員。

網絡服務器1: Windows 2012. IIS 8. ASP.NET狀態服務。 ARR控制器。

網絡服務器2: 的Windows 2012 IIS 8

網絡服務器3: 的Windows Server 2008R2。 IIS 7.5。 ASP.NET 4.5.2已安裝。

在瀏覽/服務器之間切換時,Httpcontext.Session爲空:

HttpContext context = HttpContext.Current; 
if (context.Session == null) 
{ 
    CurrentLogger.Logger.Info("Context.Session is null"); 
} 

如果我很幸運,並請求重定向到同一臺服務器,它保留了會議。

將sessionState服務器配置是這樣的:

<sessionState mode="StateServer" stateConnectionString="tcpip=192.168.2.53:42424" cookieless="false" timeout="30" /> 

我還設置了機鍵:

<machineKey validationKey="[xxxxx]" decryptionKey="[xxxx]" validation="SHA1" /> 

我要求所有的cookie只通過SSL發送。使用IIS日誌記錄我發現這不是問題。會話cookie將發送給所有網絡服務器。

什麼可能導致我的會話在服務器之間爲空?

回答

0

解決方法在這裏找到:https://stackoverflow.com/a/456238/167196

爲了保持在不同的Web服務器會話狀態Web場中,網站的應用程序路徑(例如,\ LM \ W3SVC \ 2)在Microsoft Internet信息服務(IIS)元數據庫必須是對於Web場中的所有Web服務器都是相同的。案例也需要相同,因爲應用程序路徑區分大小寫。

相關問題