2012-06-23 51 views
0

我正在使用一個會話來傳遞一個變量,但在登錄會話後在服務器上自動過期2-3分鐘後,有什麼問題?在asp.net到期的會話

的webconfig文件:

<sessionState timeout="1440" mode="InProc"></sessionState> 
    <authentication mode="Forms"> 
     <forms name="School" loginUrl="Login.aspx" defaultUrl="default.aspx" 
       timeout="1440" slidingExpiration="true" protection="All" path="/" /> 
    </authentication> 

我改變了超時,但它不工作。

+1

你忘了張貼代碼? –

+0

@ RayCheng XML文本是由SO解析,除非它被代碼阻止,在將來編輯和格式化代碼..:D – Baz1nga

+0

@ Baz1nga,我不知道。謝謝你的提示。 –

回答

1

Enablecheck the logsperformance counters如果應用程序池重新啓動一些(configurable)的原因,並loses it's sessions。例如,如果內存不足(更有可能是共享應用程序池),如果每分鐘有太多錯誤(可能是由例如搜索引擎蜘蛛引發的「隱藏」錯誤),或者如果您要更改觀察文件或觀察文件夾(如web.configbin\)。

根據您的會話「正常運行」的要求,因爲重新啓動應用程序池將下降(「過期」)所有in process會話,你可以通過使用進程外會話狀態存儲的「修復」的問題,像ASP.NET/Windows State Service/ServerSQL Server

如果您覺得這是IIS配置或服務器問題而不是代碼問題,您可以隨時詢問ServerFault

0

您對Session和Forms的超時設置看起來不錯,但仍有許多事情可能會導致您認爲會話超時。我建議你調查問題如下:

網絡設置:如果您的服務器負載均衡,請確保配置將與會話一起使用。

應用程序池:檢查IIS上的應用程序池刷新/重置規則。確保沒有設置每20次請求或類似內容刷新池。

任務管理器:查看任務管理器並查看IIS工作進程如何執行(w3wp.exe)。它是否被防病毒程序殺死?如果是這樣,會話將確定超時。

事件日誌:最後,看看Windows事件日誌。查看是否有與超時有關的事件條目。

0

添加到您的Global.asax.cs

protected void Session_Start(object sender, EventArgs e) 
     { 
      Session.Timeout = 240; 
     } 
+0

此代碼沒有影響....... –