我遇到了一个非常糟糕的问题,无论我尝试什么,用户都会在 10 分钟后被注销。
我正在使用在 Server 2003 R2 Standard Edition 上的 IIS 6.0 上运行的 ASP.Net 2.0,作为具有所有适用更新和 .Net 3.5 SP1 的虚拟服务器运行。
客户端是 Internet Explorer 7.0
以下是 web.config 设置:
<!-- Authentication Mode -->
<authentication mode="Forms">
<forms name=".RecipeViewer" timeout="240" />
</authentication>
以下是用于设置授权 cookie 的代码:
Private Sub SetCookie(userName)
' Use security system to set the UserID within a client-side Cookie
Dim ticket As New FormsAuthenticationTicket(1,userName, DateTime.Now, DateTime.Now.Add(Me.GetFormsAuthSettings.Forms.Timeout), True, String.Empty, FormsAuthentication.FormsCookiePath)
Dim hash As String = FormsAuthentication.Encrypt(ticket)
Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash)
cookie.HttpOnly = True
If (ticket.IsPersistent) Then
cookie.Expires = ticket.Expiration
End If
Response.Cookies.Add(cookie)
' Redirect browser back to originating page
Response.Redirect(Request.ApplicationPath)
End Sub
Private Function GetFormsAuthSettings() As System.Web.Configuration.AuthenticationSection
Return DirectCast(System.Configuration.ConfigurationManager.GetSection("system.web/authentication"), System.Web.Configuration.AuthenticationSection)
End Function
我以前使用过 FormsAuthentication.SetAuthCookie 甚至尝试过 FormsAuthentication.RedirectFromLoginPage 方法,但是这些方法都具有相同的结果,这就是为什么我最终执行了内部完成的硬 cookie 实现(通过在 Reflector 中查看) FormsAuthentication 类可以。
该问题在 Visual Studio 2008 asp.net 托管环境或 IIS 7.0 中无法重现。
编辑:启用 Cookie,甚至托管站点也已添加为受信任站点。
编辑:谷歌浏览器和火狐没有这个问题。
编辑:目标机器上的已验证 Cookie 根据设置设置为 4 小时后过期(超时 = 240 分钟)。
编辑:正如豪斯所说,每个人都在撒谎。用户实际上并没有测试新的代码库,而是基于一个先入为主的想法,即该软件仍然存在问题。感谢所有在此主题中回复的人。
不要关闭它不再相关,而是保留它以帮助人们解决问题,因为这个问题中有一些非常好的故障排除技术。