我正在尝试在经过身份验证的用户创建新会话时创建日志,但由于某种原因,我遇到了奇怪的行为。为了测试,我在web.config中将会话超时设置为2分钟:
<sessionState cookieName="AppName_SessionId" timeout="2" />
在Global.asax.vb中,我有以下代码记录:
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
If My.User.IsAuthenticated = True Then
Log.Create()
End If
End Sub
登录后一切正常,关闭浏览器并重新打开。当我在会话中访问页面时,它只记录一次。问题是当我停止并让会话过期(测试2分钟)并再试一次。它记录新会话,这是我期望的行为,但之后会在每个页面视图上触发Session_Start。我在不同的浏览器上确认了这个
看来,一旦会话过期且浏览器仍然打开,它就无法维持会话。
答案 0 :(得分:1)
我的解决方法是向会话添加内容:
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
If My.User.IsAuthenticated = True Then
Log.Create()
Session("SessionLogged") = True
End If
End Sub