負荷分散アプリケーションがあり、ユーザーがログインしようとすると、他の人の名前が表示されるという問題があります。
ログアウト プロセス中は、「Session.Abandon();」のみを呼び出します。http://support.microsoft.com/kb/899918の記事には、次のように記載されています。
セッションを放棄しても、セッション ID Cookie はユーザーのブラウザから削除されません。したがって、セッションが放棄されるとすぐに、同じアプリケーションへの新しいリクエストは同じセッション ID を使用しますが、新しいセッション状態インスタンスを持ちます。同時に、ユーザーが同じ DNS ドメイン内で別のアプリケーションを開いた場合、Abandon メソッドが 1 つのアプリケーションから呼び出された後、ユーザーはセッション状態を失うことはありません。
ログイン中にユーザーが他の人の名前を表示する理由を誰かが知っていますか?
編集済み - コード:
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>