2014. 3. 8. 15:00

asp.net 의 2010버전인가 까지는  'global.asax'를 생성하면 메소드들을 미리 생성해 줬는데 이제는 안그렇습니다.

이게 버전업데이트가 되면서 그렇게 된건지 알 수 없지만 불편한 것이 UI지원도 없고(예전엔 있었던거 같은데;;) 자동완성도 안되는데 MSDN을 뒤저봐도 이벤트 자체에 대한 내용이 없습니다-_-;;;;

 

겨우겨우 찾은것이

"'global.asax'는  'Application_event 패턴'을 사용합니다."

이 문구 뿐-_-;;;;;;;;;

 

'뭔 소리인가?' 하고 다시 읽어 보니....

아....

 

 

0. Application_event 패턴

 

'Application_event 패턴'이라는 것이 정확하게 무엇을 의미하는 지는 모르겠습니다.

단지 지원되는 이벤트의 앞에 'Application_'만 붙여주고 함수 형태를 '(object sender, EventArgs e)'이렇게 만들어 주면 됩니다.

 

예를 들면

 

void Application_Start(object sender, EventArgs e)
{
	// 응용 프로그램 시작 시 실행되는 코드
}

 

 

이런 식으로 말이죠.

 

 

1. 'global.asax' 주요 이벤트들

쓰는건 몇개 안되는데 갯수는 많네요 ㅎㄷㄷ

이벤트 이름을 클릭하면 해당 MSDN으로 링크 됩니다.

(참고 : MSDN - HttpApplication 클래스, MSDN - SessionStateModule 이벤트, techrepublic - Working with the ASP.NET Global.asax file)

 

 

 응용프로그램 이벤트들

 

Application_End

응용 프로그램의 인스턴스가 끝날때 한번 발생합니다.

Application_Init

응용 프로그램이 초기화 되거나 처음 호출 될때 발생 합니다.

Application_Start

사용자가 웹사이트에 접속하여 인스턴스가 생성 될 때 발생하는 이벤트 입니다.

 

 

 

 

 

 

HttpApplication 클래스
Application_AcquireRequestState

ASP.NET에서 현재 요청과 관련된 현재 상태(예: 세션 상태)를 가져오는 경우 발생합니다.

Application_AuthenticateRequest

보안 모듈에서 사용자의 ID를 설정한 경우 발생합니다.

Application_AuthorizeRequest 보안 모듈에서 사용자 인증을 확인한 경우 발생합니다.
Application_BeginRequest

ASP.NET이 요청에 응답할 때 HTTP 파이프라인 형태의 첫 번째 이벤트로 발생합니다.

Application_Disposed

응용 프로그램이 삭제되는 경우 발생합니다.

Application_EndRequest ASP.NET이 요청에 응답할 때 실행의 HTTP 파이프라인 체인에서 마지막 이벤트로 발생합니다.

Application_Error

처리되지 않은 예외가 throw되는 경우 발생합니다.
Application_PostRequestHandlerExecute

ASP.NET 이벤트 처리기(예: 페이지 또는 XML Web services)가 실행을 완료하는 경우 발생합니다.

Application_PreRequestHandlerExecute

ASP.NET에서 페이지 또는 XML Web services 같은 이벤트 처리기의 실행을 시작하기 바로 전에 발생합니다.

Application_PreSendContent

ASP.NET에서 클라이언트로 내용을 보내기 바로 전에 발생합니다.

Applcation_PreSendRequestHeaders ASP.NET에서 클라이언트로 HTTP 헤더를 보내기 바로 전에 발생합니다.
Application_ReleaseRequestState ASP.NET에서 모든 요청 이벤트 처리기 실행을 완료한 후 발생합니다. 이 이벤트는 상태 모듈이 현재 상태 데이터를 저장할 수 있도록 합니다.

Application_ResolveRequestCache

ASP.NET에서 인증 이벤트를 완료하여 이벤트 처리기(예: 페이지 또는 XML Web services)의 실행을 무시하고 캐싱 모듈이 캐시 요청을 처리하도록 하는 경우 발생합니다.

Application_UpdateRequestCache

ASP.NET이 이벤트 처리기 실행을 완료하여 캐싱 모듈이 캐시의 다음 요청을 처리하는 데 사용할 응답을 저장하도록 하는 경우 발생합니다.

 

나머지 'HttpApplication 클래스'이벤트도 동작하는 지는 잘 모르겠군요.

 

SessionStateModule 이벤트

Session_End 

세션이 종료될 때 발생합니다.

Session_start

세션이 만들어질 때 발생하는 이벤트입니다.

 

 

2. 이벤트 발생 순서

'global.asax'의 이벤트 발생 순서는 다음과 같습니다.

 

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

 

마무리

이거 매번 찾아보다가 귀찬아서 그냥 정리 합니다 ㅡ,.ㅡ;;;;

근데 해당 MSDN자료를 찾는게 더 힘들더라는 -_-;