2010-02-12 6 views
1

나는 사용자 지정 ASP.NET 세션 매니저 클래스가 있습니다. 다음은 내가 직면 한 문제입니다 :ASP.NET 세션 문제

1) 시스템에 처음 로그인 할 때 John과 John의 전체 이름이 홈페이지에 표시되고 해당 사용자 개체가 세션에서 유지됩니다.

2) 이제 다른 PC에서 Mark로 시스템에 로그인합니다. 이제 Mark의 전체 이름이 홈페이지에 표시되고 해당 사용자 객체가 세션에 보관됩니다.

3) 이제 John이 로그인 한 PC로 가서 홈페이지를 새로 고침하면 Johns 이름 대신 Marks 이름이 표시됩니다.

이 이상한 행동의 원인은 무엇일까요?

답변

2

클래스는 첫 번째 액세스시 세션 멤버를 HttpContext.Current.Session으로 설정하는 System.Web.UI.Page에서 상속받습니다. 싱글 톤이 있으므로 항상 User 속성에 액세스 한 첫 번째 세션을 참조합니다.

당신은 아마 이런 식으로 뭔가를 수행해야합니다

public sealed class SessionManager 
{ 
    private const string USER = "User"; 

    private static readonly SessionManager _instance = new SessionManager(); 

    private SessionManager() 
    { 
    } 

    public static SessionManager Instance 
    { 
     get { return _instance; } 
    } 

    public User User 
    { 
     get { return HttpContext.Current.Session[USER] as User; } 
     set { HttpContext.Current.Session[USER] = value; } 
    } 
}