我遇到了以下问题
我在Global.asax
中添加了此代码Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
Session("Startdatetime") = DateTime.Now
End Sub
并在Session_end中发送电子邮件通知,告诉我Session_end正在触发 sessionValue是Session(" Startdatetime")
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
emailCenter.sendNotification(sessionvalue, "Session_End", "myemail@gmail.com")
End Sub
然后在Default.aspx / page加载中,如果会话过期,则调用此方法返回true。
If IsSessionExpired() Then
Response.Redirect("sessionTimeout.html")
End If
Public Function IsSessionExpired() As Boolean
'??? not working
If HttpContext.Current.Session IsNot Nothing Then
If (HttpContext.Current.Session.IsNewSession) Then
Dim CookieHeaders As String = HttpContext.Current.Request.Headers("Cookie")
If IsNothing(CookieHeaders) And (CookieHeaders.IndexOf("ASP.NET_SessionId") >= 0) Then
' IsNewSession is true and session cookie exists,
' so, ASP.NET session is expired
Return True
End If
End If
End If
' Session is not expired and function will return False,
' it could be new session, or existing active session
Return False
End Function
我已在web.config中设置此项以将超时设置为1分钟
<sessionState mode="InProc" cookieless="UseCookies" timeout="1" />
session_end正在触发,但IsSessionExpired()永远不会返回true !!
我没有使用Master Page进行此测试。
发生了什么事?