清除ASP.NET中的会话

时间:2012-10-12 15:00:27

标签: asp.net .net session logout siteminder

我是一名新开发人员,我被分配了解决我们的注销功能无法正常工作的任务。我已经尝试了所有可以找到的方法。下面是我保留的日志,其中包括我使用过的方法。

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

  2. 在logout.aspx.vb表单中尝试过多种方法,以使其结束或清除会话,但它们都不起作用。

  3. 一个。 logout.aspx.vb形式中定义的ClearSession子例程:

    Session("Variable") = ""
    FormsAuthentication.SignOut()
    Session.RemoveAll()
    Session.Abandon()
    Session.Clear()
    

    湾同时将其添加到Page_Load子例程的顶部:

    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
    HttpContext.Current.Response.Cache.SetNoServerCaching()
    HttpContext.Current.Response.Cache.SetNoStore()
    

    ℃。还将ClearSession子例程从Session.Contents.Remove("Variable")

    更改为Session("Variable") = ""

    这些方法都不起作用。我们使用 Siteminder ,我一直想知道这是否是问题的根源。我在清除使用 Siteminder 的会话时找不到任何内容。另请注意,此应用程序使用Visual Studio 2003进行编码。

    这是我在ascx文件中使用的按钮的代码:

    athp:TopNavText Title =“Log Out”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
    

5 个答案:

答案 0 :(得分:2)

最后想出了解决方案,我最初没有在删除包含siteminder会话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")

答案 1 :(得分:0)

这个问题:formsauthentication-signout-does-not-log-the-user-out描述了即使在调用FormsAuthentication.SignOut()之后也没有清除cookie的问题。这听起来像是你的问题,他们说这是.NET的一个错误,而你的使用1.1听起来很明显。

答案 2 :(得分:0)

HI朋友请在用户控件中添加按钮的点击事件。在点击事件中,请添加以下代码并删除所有其他代码。

会话(“变量”)=“”;

答案 3 :(得分:0)

看看这篇文章

C# Clear Session

无论是c sharp还是vb相同的规则仍然适用。您正在调用会话放弃然后清除,但是当您打电话清除时,会话应该已经消失。

Clear将会话状态与其中的对象保持在一起,因此通过在放弃后调用它实际上可以为用户重新初始化会话,但是使用已清除的变量。

如果你有一个

,请查看这篇文章,了解订单和杀死会话的正确方法并重定向到登录页面

FormsAuthentication.SignOut() does not log the user out

答案 4 :(得分:0)

首先要注意的是,如果您使用的是表单身份验证,则Session与用户是否登录完全无关。

如果CookiesSupported为false,则调用FormsAuthentication.SignOut将从cookie或URL中删除表单身份验证票证信息。

但它对Session中存储的内容没有任何影响。

<强>更新

为什么你认为注销(FormsAuthentication.SignOut)不起作用?当您点击退出时,您期望发生什么?实际发生了什么?

我将删除所有代码以清除Session并查看此内容。例如,使用Fiddler等工具查看http流量:您应该能够看到单击“注销”时删除了FormsAU身份验证Cookie。