Protected Sub logout_OnClick(ByVal sender As Object, ByVal e As EventArgs)
Session.Abandon()
Response.Redirect("login.aspx")
End Sub
它重定向到login.aspx但是当我将url更改为default.aspx时,它会在不检查的情况下进入。在所有其他浏览器中,它不会因为以下代码而重定向:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (Session("Naam") Is Nothing) Then
Response.Redirect("login.aspx")
Else
Label1.Text = "Welkom " + Session("Naam").ToString()
End If
End Sub
有没有理由IE不放弃会话?
请注意/ / 我没有使用log-incontrol,所以
答案 0 :(得分:2)
尝试禁用/删除自动回复,然后重新测试您的页面。我猜想autopostback以某种方式保持你的会话数据活跃,也许它被用在回发中?因此,所有实例都不会被抛弃?。
当调用Abandon方法时,当前的Session对象排队等待删除,但在处理完当前页面上的所有脚本命令之前,实际上并未删除。这意味着您可以在与调用Abandon方法相同的页面上访问存储在Session对象中的变量,但不能访问任何后续Web页面。
例如,在以下脚本中,第三行打印值Mary。这是因为在服务器处理完脚本之前,Session对象不会被销毁。
<%
Session.Abandon
Session("MyName") = "Mary"
Reponse.Write(Session("MyName"))
%>
如果在后续网页上访问变量MyName,则为空。这是因为当包含上一个示例的页面完成处理时,MyName被前一个Session对象销毁。
在放弃会话后,当您打开后续网页时,服务器会创建一个新的Session对象。您可以在此新的Session对象中存储变量和对象。
以上是来自MSDN网站。
这意味着您放弃了会话对象之后的某个地方。
我通常使用相同的代码块来记录会话中的成员。
Session.Abandon()
Response.Redirect("default.aspx")
在global.asax或global.aspx文件中使用相同的代码。