2012-08-06 112 views
0

本地一切工作正常,但當我將應用程序部署到IIS 6服務器時,所有會話變量都爲空。asp.net mvc應用程序會話變量在IIS中爲空6

在應用程序中,我使用的會話變量,例如,像這樣:

System.Web.HttpContext.Current.Session["test"] = "test123";

var test = System.Web.HttpContext.Current.Session["test"];

在我的web.config我有元素: <sessionState mode="InProc" timeout="20" />

在IIS中的應用程序配置選項中,選中「啓用會話狀態」選項並將會話超時設置爲20分鐘。

有誰知道我可以如何啓用此應用程序的會話?

感謝

回答

1

我能想出的最好的解釋是:

  1. 某處在你的代碼有一個Session.Abandon()Session.Clear()

  2. 有沒有在你的應用程序拋出一個相當嚴重的異常這是殺死應用程序域,並與它取出會話。檢查您的Windows事件日誌(應用程序和系統)以查看是否存在未處理的工作進程或拋出的ASP.NET異常。

  3. 您的應用程序的應用程序池設置已被修改,可能會導致池快於預期的回收。

  4. 您有一個負載平衡器或某種類型的代理服務器前面,這是損壞會話cookie。或者,如果您的設置是負載平衡環境,則會在您的負載平衡器上未配置粘性會話。

嘗試使用的進程外會話管理器的如SQL狀態經理:

http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/ms178581

+0

沒有'Session.Abandon()'或'Session.Clear()'並沒有異常的跡象。使用應用程序池和無負載平衡器,我看不到任何不尋常的事物。這太令人沮喪了!有任何想法嗎???? – MightyAtom 2012-08-07 05:44:09

+0

@MightyAtom - 你是否嘗試過進程SQL會話管理器?也可以在Fiddler或Chrome開發工具中觀看該網站,並查看是否獲取了發送的ASP.NET cookie以及是否一致或更改:ASP.NET_SessionId。 – Kev 2012-08-07 11:47:42

相關問題