2009-10-19 3 views
2

another problem을 보면서 나는 특별한 상황을 만났습니다.IRequireSessionState/IReadOnlySessionState 처리기에도 불구하고 ASP.NET 세션이 NULL입니까?

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    if (!(Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)) // No session - no validation. 
     return; 
    DoSomething(); 
} 

DoSomething() 메서드 호출이 NullReferenceException 발생하고있는 유일한 장소가 HttpContext.Current.Session가 null 인 경우 그했다 할 수있을만큼 간단하다 : 나는 다음과 같은 코드를 가지고있는 Global.asax에 방법 내에서

.

어떻게 될 수 있습니까?

답변

1

그 당시 HttpContext.Current.Session은 null 일 수 있습니다. 이 이벤트는 세션이 인 시점에서 실행되며이 획득되었습니다.이 시점에서 이되었다는 보장이 없습니다. 이 이벤트를 연결할 수있는 한 가지 이유는 고유 한 Session 객체를 구현하는 사용자 정의 모듈을 제공하기 때문입니다. 그러한 커스텀 모듈이 Session을 설정하게 될 것입니다.

세션 개체를 사용하려면 PostAquireRequestState 이벤트를 사용해야합니다.

0

이 메서드에서 Session 개체는 아직 구성되지 않았으므로 액세스 할 수 없습니다. 이 메서드 후에 실행되는 메서드에서 작업을 수행하십시오. 어쩌면 Application_PreRequestHandlerExecute 또는 Global.asax 파일에서 방법의 실행 순서를 보려면이 페이지를 봐 https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html

나머지 이벤트가 응용 프로그램 요청을 처리하고, 그들은 다음과 같은 순서로 트리거하고 있습니다 :

* Application_BeginRequest 
* Application_AuthenticateRequest 
* Application_AuthorizeRequest 
* Application_ResolveRequestCache 
* Application_AcquireRequestState 
* Application_PreRequestHandlerExecute 
* Application_PreSendRequestHeaders 
* Application_PreSendRequestContent 
* <<code is executed>> 
* Application_PostRequestHandlerExecute 
* Application_ReleaseRequestState 
* Application_UpdateRequestCache 
* Application_EndRequest 
+0

재밌 네요. 항상 내 컴퓨터와 다른 많은 컴퓨터에서 작동했기 때문입니다. –

+0

AJAX 전화를 사용하고 있습니까? 그렇다면 문제의 원인이 될 수 있습니다. – fedotoves

+1

서버에 대해 AJAX 호출이 다른 점은 무엇입니까? O_o –

관련 문제