2011-07-14 135 views
2

我的應用程序的會話突然結束,並且在Global.asax的Application_Error中看不到任何錯誤。此外,Session_Start事件觸發,但不是Session_End。它發生在我將應用程序託管在服務器上並且不在我的開發機器上發生之後。ASP.NET會話突然終止

生成此自動退出的步驟是在加載和顯示對象列表(客戶端,管理器等)的頁面之間切換。大約30-40秒的活動後,用戶註銷並顯示登錄屏幕。任何想法可能在幕後出錯?

的Web.Config對會話和認證以下設置:

<sessionState timeout="60" mode="InProc" cookieless="false"/> 

認證:

<forms name="XXX.AUTH" loginUrl="~/login.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/default.aspx" enableCrossAppRedirects="false"/></authentication> 

回答

2

您是否在共享主機環境中託管(即來自託管服務提供商,如GoDaddy)?他們可能每分鐘都在回收IIS工作進程,在這種情況下,您會丟失會話信息。您必須使用某種類型的進程外會話狀態,例如狀態服務器或Sql狀態服務器來避免這種情況。

這是MSDN文章。

+0

你的意思是mode =「stateServer」?是的,它是一個共享主機環境。如果我使用stateServer,我需要指定server:port設置,我可以從哪裏獲得這些設置?我還需要配置IIS/Server嗎? – A9S6

+0

是的,您可以使用mode =「stateServer」或mode =「SQLServer」。誰是你的主人?我相當有信心GoDaddy不支持這個,因爲我碰到它[早](http://stackoverflow.com/questions/6092249/does-godaddy-support-asp-net-stateserver)。 – Jason

+0

它是一個客戶端站點(我只能通過FTP訪問它),但我不確定提供者,但是使用whois搜索「ns1.microsoft2008hosting.com」出現,並且出現「microsoft2008hosting」。com「無效 – A9S6

-2

會議簡直就是一個cookie,以及每個cookie都有一個時間。也許你沒有正確指定時間。檢查你的web.config文件。

+0

將會話設置添加到原始帖子。 – A9S6

+0

會話不僅僅是一個cookie。在Web瀏覽器的環境中,確保它只是一個cookie,但是cookie的超時時間絕對不能100%反映會話管理服務中關聯會話的超時時間。例如,某些會話cookie可能會在瀏覽會話結束時過期,或者從不過期,而會話本身可能會在閒置15分鐘後終止。 –

1

您是否檢查過網站的應用程序池是否正在回收?如果發生這種情況,應用程序將停止在它的軌道上。更多的應用程序在應用程序池中運行,可能會有另一個應用程序崩潰,並將應用程序關閉。

+0

我該如何檢查?我有FTP訪問該網站,也許我需要訪問到管理控制檯? – A9S6

+0

你可以RDP到服務器?如果是的話,那麼你可以檢查它...在共享主機你做沒有真正有辦法檢查這與出去聯繫支持 –

+0

不,我不能RDP - 它共享主機。 – A9S6

0

您錯過了在您的IIS池屬性中更改會話到期值。

0

您是否嘗試過在web.config中指定machineKey?此外http://aspnetresources.com/tools/machineKey

,如果你改變超過15個文件的應用程序中(ASPX文件等)時,會自動觸發的代碼重新編譯,你可能會失去:

<machineKey 
validationKey="random_validation_key" 
decryptionKey="random_decryption_key" 
validation="SHA1" decryption="AES" /> 

你可以在這裏產生這些密鑰結果,更多信息在這裏:http://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.85).aspx