2012-11-03 52 views
3

我相信我已經研究了所有相關的計算器問題以及其他網絡資源,但我仍然是在使用了約20個用戶全天候的Web應用程序,每天十次以上的有這個問題時間。提供的票證已過期

Event code: 4005 
Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired. 

用戶說,他們所得到註銷早於60分鐘的超時。 (應用程序中的某些表單需要很長時間才能填寫,用戶正在面試人員和寫筆記,這可能需要很長時間,因此,如果您在緩慢輸入筆記20-30分鐘後保存表單,日誌你來的時候,你提交表單)

一些細節:

  1. 這是一個單一的Web服務器正在運行IIS 7.5,而不是形式(該 數據庫是在另一臺電腦)。所有的服務器都虛擬機
  2. IIS會話狀態 被設置爲「處理中」,並且在cookie設置超時時間爲60 分鐘。
  3. 應用程序池有空閒超時時間設置爲60分鐘和 回收間隔29小時
  4. 我沒有看到在事件日誌中的任何錯誤,這些「票到期」在此之前,指示工人 進程失敗或消息應用程序池已被回收。

終於從web.config中的一個片段:

<authentication mode="Forms"> 
<forms loginUrl="~/Account/Login.aspx" timeout="60" protection="All"  slidingExpiration="true" /> 
</authentication> 

任何幫助追查這些會話超時,將不勝感激。

+0

我能夠通過讓會話坐了31分鐘和59之間重現此問題我自己。所以也許是因爲誤解滑動到期的原因(我仔細閱讀過)。實現會話超時策略的最佳方式是,用戶從最後一次觸摸服務器總是獲得60分鐘的時間? – royappa

+0

您可能沒有設置'machineKey',並且關鍵是池回收中的更改。 - 同時檢查web.config上'forms'屬性上是否放置了'slidingExpiration =「true」'。 – Aristos

回答

1

我已經使用jquery空閒計時器跟蹤用戶不活動,並在會話超時前顯示警告。還允許用戶通過進行Ajax調用來更新會話。僅供參考,你可以參考以下鏈接

link 1

link2