2010-09-21 184 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