IE Session.Abandon()

时间:2013-05-01 09:15:23

标签: asp.net vb.net session

当它出现在会议上时,IE似乎有点儿麻烦。这是执行的整个代码:

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,所以

1 个答案:

答案 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文件中使用相同的代码。