在FormsAuthenticationTicket超时中途发布新会话cookie

时间:2011-04-13 03:26:35

标签: asp.net session timeout formsauthenticationticket

我在我的asp.net 4.0应用程序中使用Forms身份验证(从.NET 1.1升级)。我显式创建FormsAuthenticationTicket对象,然后对其进行加密(使用FormsAuthentication方法),并将其以cookie的形式发送给客户端。我使用FormsAuthentiation.RenewTicketIfExpired()来设置身份验证cookie的滑动过期。

我可以使用Fiddler查找在FormsAuthenticationTicket超时中途发布的新会话cookie。

如果formsauthentication超时= 2分钟,会话超时= 20分钟

HH:MM:SS

10:00:00用户登录

10:01:10发生回发

然后将重新创建一个新会话并注销。但是我将会话设置为每20分钟超时一次。我尝试了不同的formsauthentication超时值,并且总是在超时的中途创建一个新会话。

我需要将formsauthentication超时设置为一个非常大的值,以避免这种情况发生。

从.NET 1.1升级之前没有这样的问题

有人知道为什么吗?这是一个在asp.net 4.0中处理滑动过期的错误吗?

2 个答案:

答案 0 :(得分:1)

即使问题很老,也要写一个答案,以防有人像我一样碰到这个问题。

这不是一个错误,因为您有 SlidingExpiration = yes 这是默认值,所以在超时中途发出新票证。

当滑动过期时,如果超过一半的超时时间,则FormsAuthentication将重新发出另一个x分钟的FormsAuthentication票证,其中x是您的表单验证超时设置。

从技术上讲,即使每次请求到达服务器时都会发生这种情况(不仅仅是在超时的一半时间之后),并且某些文档声称它已经完成了它可能出于性能原因而没有这样做,有些浏览器似乎不喜欢经常设置cookie。

请参阅http://msdn.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.slidingexpiration.aspx

答案 1 :(得分:0)

您的网站可能正在回收。这可能由于几个原因而发生。最近发现我的是网站目录结构发生变化(例如添加文件夹)。

因为您知道它发生在哪里,所以请确保您没有造成任何回收。