2011-08-02 167 views
1

我在會話中存儲了一些信息,但會話每次都會被銷燬。我不知道爲什麼會發生這種情況。我正在使用IIS7。會話超時問題

這就是我所做的設置:

<sessionState cookieless="AutoDetect" mode="InProc" timeout="120" /> 

我存儲一些信息,而用戶得到註冊,但我的客戶抱怨說,當他閒置20-30分鐘的信息丟失。我正在一個空閒超時時間爲20分鐘的自定義應用程序池(在應用程序池的屬性中)運行應用程序。這可能是問題嗎?

其次,即使我指定超時時間爲120分鐘,但是當我點擊IIS7中的「會話狀態」圖標時,它不會在任何地方顯示120分鐘。可能是什麼問題?

感謝提前:)

更新:在 「會話狀態」 Cookie設置在IIS7我看到超時5分鐘Asp_NetSessionId。這可能是罪魁禍首嗎?

回答

2

那麼如果您的應用程序池在20分鐘後被銷燬,那麼考慮到您的會話處於不正常狀態,這將是一個問題。將應用程序池的超時時間增加爲120分鐘

1

如果存儲會話InProc,則每20分鐘應用程序將重新啓動,並且所有會話都會丟失。 運行的StateServer服務,並在web.config中使用

<sessionState mode="StateServer" timeout="120" /> 

。然後你不關心應用程序重新啓動的頻率,甚至可以上傳新版本,並保留會話。

1

是的,當您在AppPool設置中指定一個空閒超時時,它基本上會殺死您的工作進程,從而破壞您的會話。

您將看到Cookie設置選項卡下的值,作爲處理InProc會話的方式之一是通過Cookie。