2012-04-02 77 views
0

即使我在web.config中添加了代碼,但會出現會話超時的問題,但它不工作,它會在10分鐘內過期。在asp.net中服務器端的會話超時c#

<sessionState mode="InProc" timeout="300"></sessionState> 

服務器的會話超時時間爲20分鐘。

請幫我解決會話超時問題?

回答

1

什麼是您的應用程序正在使用的IIS應用程序池上設置的空閒超時值?由於您正在使用InProc會話,因此如果池進程終止,會話也將丟失。

+0

如果我刪除inproc模式,那麼它也會給出相同的輸出 – Ishita 2012-04-02 05:39:00

+0

@Ishita,當你刪除它,你r用什麼來放置它?因爲這是默認設置。如果你只是刪除'mode =「InProc」'屬性,你會回落到它。 – 2012-04-02 06:35:24

+0

我刪除了模式屬性。 – Ishita 2012-04-02 08:59:14

0

也許Cookie在您的瀏覽器中被關閉,或者它被設置爲不是域名,而是一些文件夾或子域名。用下面的方式

<sessionState cookieless="true" mode="InProc" timeout="300" > </sessionState> 

測試本次會議是否會工作那麼問題是在你的瀏覽器1)餅乾被關閉OR 2)有一定的要求將使會話值設置爲null。

更新

如果這是鉻問題,那麼它將請求favicon.ico的(對我來說)see here我該更新的問題。

+0

它不是瀏覽器的問題 – Ishita 2012-04-02 06:15:14

1

儘管您的服務器會話超時時間爲20分鐘,如您所述。您可能會因以下原因丟失會話狀態數據:

  • 當IIS應用程序池重新啓動或重置時。
  • ASP.NET工作進程被意外回收。
  • 覆蓋您的bin或web.config。
  • 或者當您上傳或刪除應用程序中的任何文件時。

解決方案:使用StateServer會話狀態模式:

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="UseCookies" timeout="300" regenerateExpiredSessionId="true" /> 

訪問該鏈接可配置的StateServer:Configure a State Server to Maintain Session State

0

檢查應用程序池空閒狀態超時默認爲20分鐘(如果應用程序池處於閒置狀態20分鐘它會回收,所有進程內會話將被清除)增加其超時