我有一个负载平衡应用程序,我们遇到了用户尝试登录的问题,他/她会看到其他人的姓名。ASP.NET会话状态问题
在注销过程中,我们只调用“Session.Abandon();”。在http://support.microsoft.com/kb/899918文章指出以下几点:
当你放弃会话,会话ID cookie不会从 用户的浏览器中删除。因此,一旦放弃了会话 ,对同一应用程序的任何新请求将使用相同的会话ID,但将具有新的会话状态实例。在同一个 时间内,如果用户在同一个DNS 域中打开另一个应用程序,则在从一个应用程序调用Abandon 方法后,用户不会丢失其会话状态。
有没有人有线索为什么用户在登录时看到别人的名字?
编辑 - 代码:
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>
你使用的是InProc会话状态模式下,这些线路?我认为InProc在webfarm /网络负载平衡方面效果不佳。检查这个问题http://stackoverflow.com/questions/7084729/load-balancing-in-asp-net-what-i-should-consider-while-development –
进程内会话状态 – user384080