asp.net - 清除 ASP.NET 中的 session

标签 asp.net .net session logout siteminder

我是一名新开发人员,我被分配的任务是找出我们的注销功能不起作用的原因。我已经尝试了我能找到的所有可能的方法。下面是我保存的日志,其中包括我使用过的方法。

  1. 在 CommonHeader.ascx 表单中添加了注销按钮

  2. 在 logout.aspx.vb 表单中尝试了多种方法来结束或清除 session ,但都不起作用。

a.以 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 的 session 的信息。另请记住,此应用程序是使用 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

最佳答案

终于找到了解决方案,我最初在删除包含siteminder session id的cookie时没有定义域。我使用的代码如下:

        Dim cookie3 As HttpCookie = New HttpCookie("SMSESSION", "NO")
        cookie3.Expires = DateTime.Now.AddYears(-1)
        cookie3.Domain = ".domain.com"
        Response.Cookies.Add(cookie3)

        Response.Redirect("login.aspx")

关于asp.net - 清除 ASP.NET 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861835/

相关文章:

c# - 将 C# 桌面应用程序移植到 Web

c# - 类型成员的表达式导致不同的表达式(MemberExpression、UnaryExpression)

c# - 检查暂停布局

c# - 在带有 runat=server 的 href <%= xx %> 中使用服务器变量

c# - 在使用 MasterPage 的网络表单上使用 CSS

c# - Linq 选择某些属性到另一个对象?

php - 验证码 session 有时不更新

javascript - 如何测试在浏览器中发送需要身份验证的请求的函数?

nhibernate - 在 Web 应用程序(特别是 MVC)中,在哪里打开和关闭 NHibernate ISession?

c# - 如何让 JavaScript 在 WebBrowser 控件中运行?