2010-09-21 186 views
2

我有一個ASP.NET窗體身份驗證下的許多網站。他們有混合的框架(一些有2.0,大約4.0,但一切都好)一切正常,但有時,在隨機時間(例如兩分鐘)後,客戶端的會話結束,他必須輸入他的密碼agian 。爲什麼?我錯過了什麼?ASP.NET身份驗證會話

這裏是我的web.config的一部分:

<authentication mode="Forms" ><forms loginUrl="../web/start_page/start_page.aspx" 
    name=".ASPXFORMSAUTH" 
    protection="All" 
    path="/" 
    timeout="60" /></authentication> 
<machineKey 
    validationKey="blablabla" 
    validation="SHA1" /> 
<sessionState mode="InProc" stateNetworkTimeout="3600" /> 

事件查看器顯示:

Event code: 4005 
Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired. 
Event time: 21.09.2010 8:23:26 
Event time (UTC): 21.09.2010 4:23:26 
Event ID: e3a00bef332a4dec9cd1aa078a3d5aa4 
Event sequence: 277 
Event occurrence: 1 
Event detail code: 50202 
+0

你看了看firebug中的cookie,看看'expires'設置爲什麼嗎? – RPM1984 2010-09-21 06:10:55

+0

也許網站上的服務器時鐘不同步?檢查它們的日期和客戶機器上的日期。 – RPM1984 2010-09-21 06:15:32

回答

1

其因爲會話超時事件發生,所以你需要增加你的會話時間是這樣的

<configuration> 
    <sessionstate 
     mode="inproc" 
     cookieless="false" 
     timeout="20" 
     sqlconnectionstring="data source=127.0.0.1;user id=<user id>;password=<password>" 
     server="127.0.0.1" 
     port="42424" 
    /> 
</configuration> 

超時。該選項控制會話被認爲有效的時間長度。會話超時是一個滑動值;對每個請求的超時時間段設置爲當前時間加上超時值

+0

所以我有超時= 60,爲什麼不適合? – eba 2010-09-21 05:50:18

+0

@eba - 在msdn上檢查更多詳細信息的timeout propety以增加超時 – 2010-09-21 05:55:07

+1

sessionstate config與表單驗證cookie超時無關。 – RPM1984 2010-09-21 06:09:36