ASP.NET会话stateid问题

时间:2013-07-08 07:12:50

标签: asp.net

我有一个负载均衡应用程序,我们遇到一个用户尝试登录的问题,然后他/她会看到其他人的名字。

在注销过程中我们只调用“Session.Abandon();”。 http://support.microsoft.com/kb/899918中的文章陈述如下:

  

当您放弃会话时,不会删除会话ID Cookie   用户的浏览器。因此,会议一旦开始   放弃,对同一应用程序的任何新请求都将使用相同的   会话ID但会有一个新的会话状态实例。在同一个   时间,如果用户在同一DNS中打开另一个应用程序   域,用户放弃后不会丢失会话状态   从一个应用程序调用方法。

有没有人知道用户登录时为什么会看到别人的名字?

已编辑 - 代码:

public class CacheManager
{
public Contact.Contact User
{
    get { return HttpContext.Current.Session["Contact"] as Contact.Contact; }
    set { HttpContext.Current.Session["Contact"] = value; }
}
}

header.ascx.cs

/// <summary>
/// This is the session manager
/// </summary>
public readonly CacheManager Localcache = new CacheManager();


public Login()
{
     var contact = BAL.Contact.Get(this.UserName, this.Password);
     Localcache.User = contact;
     Response.Redirect(Request.Url.AbsoluteUri);
}

protected void Logout_Click(object sender, ImageClickEventArgs e)
{
        Session.Abandon();
        Response.Redirect(Constants.HomePage);
}


header.ascx:

You are logged in as
<br />
<span class="user_desc">
<%= string.Format("{0} {1}",LocalCache.User.FirstName ,LocalCache.User.LastName)%></span>

1 个答案:

答案 0 :(得分:1)

当用户明确注销并且新用户访问该页面时(假设浏览器未关闭),浏览器仍然维护sessionId(即使使用Session.Clear()Session.Abandon())。

尝试添加这些代码行

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

Link to check