如何最好地检测 ASP.NET 过期会话?

Posted

技术标签:

【中文标题】如何最好地检测 ASP.NET 过期会话?【英文标题】:How do I best detect an ASP.NET expired session? 【发布时间】:2010-09-05 10:52:26 【问题描述】:

我需要在我的 Visual Basic Web 应用程序中检测会话何时过期。这就是我正在使用的......

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If CurrentSession.IsNew AndAlso (Not Page.Request.Headers("Cookie") Is Nothing) AndAlso (Page.Request.Headers("Cookie").IndexOf("ASP.NET_SessionId") >= 0) Then
        Response.Redirect("TimeOut.aspx")
    End If

    ...do something...

End Sub

注意:CurrentSession.IsNew返回HttpContext.Current.Session.IsNewSession

这对于 Internet Explorer 似乎很有效,但对于 Firefox 似乎失败了。

【问题讨论】:

您可以使用 Global.asax 中的 Session_End 函数吗? http://articles.techrepublic.com.com/5100-10878_11-5771721.html 我目前只在 global.asax 文件中使用 Application_Error 事件。也许我的会话处理也属于那里。但是,如何在请求的页面加载时使用它? 【参考方案1】:

试试下面的

If Session("whatever") IsNot Nothing Then

【讨论】:

以上是关于如何最好地检测 ASP.NET 过期会话?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用httpcontext在asp.net中显示会话过期的消息

如果会话过期,如何自动重定向? ASP.Net(从 SessionTimeout.aspx 到 Timeout.aspx)

ajax 请求是不是会导致更新 asp.net 会话?

Asp.Net Identity2,如何检测 cookie 何时过期

ASP.NET2.0 ReportViewer会话已过期

了解 ASP.Net 会话生命周期