2010-12-08 3 views
3

나는 이와 비슷한 질문을 이미 here에 게시했습니다. 나는 본질적으로 같은 질문을하지만, 작은 꼬임을 가지고 있습니다.ASP.NET MVC : Session_End에서 세션 데이터에 액세스하거나 바로 전에 이벤트에 액세스

Session_End 메서드 내에서 Session 정보에 액세스하려고하는데 HttpContext가 도착할 때까지 HttpContext가 null이므로 실제 정보를 얻지는 못합니다. 거의 Session_End가 시작될 때까지 완전히 지워졌을 것입니다.

관련 질문의 해답은 내가 필요한 세션 정보를 참조하기 위해 this.Session을 사용할 수 있다고 말합니다.이 세션 정보는 HttpApplication 클래스 Global에서 상속받은 HttpApplication.Session 변수에 액세스합니다. 하지만 내 응용 프로그램에서, 우리는 다음과 같이 전역에서 세션 변수를 자신을 재정의했습니다

public new static HttpSessionState Session 
    { 
     get 
     { 
      return HttpContext.Current.ApplicationInstance.Session; 
     } 
    } 

을 그래서 나를 위해, null의 HttpContext를,에서 정보를 얻을하려고합니다 this.Session를 참조.

그래서 저는 두 가지 질문이 있다고 생각합니다. 첫째, Session_End 전에 발생하지만 Session 데이터가 지워지기 전에 발생하는 이벤트가 있습니까? 둘째, 첫 번째 질문에 대한 대답이 '아니오'인 경우 Session_End에서 해당 데이터에 액세스 할 수있는 방법이 있습니까?

감사합니다.

답변

0

in_proc 세션 상태 모드를 사용하는 경우에만 session_end가 발생합니다. 서버 팜에 웹 응용 프로그램을 배포하면 발생하지 않습니다. 어쨌든 내가 뭘 원하는지 모르겠다면 HttpModule 내에서 세션 끝을 처리하는 것이 더 낫다. 아래 링크를 참조하십시오.

http://www.codeproject.com/KB/aspnet/SessionEndStatePersister.aspx