【发布时间】:2012-10-03 10:22:46
【问题描述】:
我是一名新开发人员,我的任务是找出为什么我们的注销功能不起作用。我已经尝试了我能找到的所有可能的方法。以下是我保留的日志,其中包括我使用过的方法。
在 CommonHeader.ascx 表单中添加了一个注销按钮
在 logout.aspx.vb 表单中尝试了多种方法以使其结束或清除会话,但均无济于事。
一个。以 logout.aspx.vb 形式定义的 ClearSession 子例程:
Session("Variable") = ""
FormsAuthentication.SignOut()
Session.RemoveAll()
Session.Abandon()
Session.Clear()
b.还将它添加到 Page_Load 子例程的顶部:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoServerCaching()
HttpContext.Current.Response.Cache.SetNoStore()
c。还将 ClearSession 子例程从 Session("Variable") = "" 更改为 Session.Contents.Remove("Variable")
这些方法都不起作用。我们使用 Siteminder,我一直想知道这是否是问题的根源。我只是在清除使用 Siteminder 的会话时找不到任何东西。另请注意,此应用程序是使用 Visual Studio 2003 编码的。
这是我在 ascx 文件中使用的按钮的代码:
athp:TopNavText Title="注销" NavigateUrl="logout.aspx" Target="_top"/
然后在“logout.aspx”表单上,我尝试使用上述方法之一或每种方法的组合。这是我接触之前的代码:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ClearSession()
Response.Redirect("login.aspx")
End Sub
Public Sub ClearSession()
Session("Variable") = ""
End Sub
【问题讨论】:
-
您是否通过调试确认您的 ClearSession 子例程已被调用? (特别是当你在那里有 Session.Abandon() 时)
-
如果您使用的是 VS2003,那么您使用的是 .NET 1.1。
-
是的,它肯定击中了子程序。我在代码中放置了标记,以验证它在到达 ClearSession 子例程之前没有停止。它只是在页面加载时调用,然后它应该重定向到登录页面,但是当我没有引用 Response.Redirect("login.aspx") 时,它一直将我重定向回主页,而我仍然登录。跨度>
-
@JohnSaunders: 抱歉标签不好... vs 2003 已经很久了,我暂时忘记了版本...
-
您是否尝试过在 session_start 中放置一个断点以查看它是否再次被击中并重新初始化所有内容?我已经看到这是一个问题。
标签: asp.net .net session logout siteminder