[ASP.NET] Global.asax Events
2012. 4. 2. 13:13ㆍWEB
Global.asax 파일은 Application, HttpModule에서 사용하는 Events들을 한 장소에서 처리할 수 있도록 지원합니다. Global.asax는 HttpApplication을 상속하기 때문에 HttpApplication에 대한 모든 기능을 사용하실 수 있습니다.
이벤트
Global.asax에서 기본적으로 지원하는 이벤트는 다음과 같습니다.
- Application_Init: Application이 실행될 때 실행되는 이벤트입니다.
- Application_Disposed: Application이 소거될 때 발생하는 이벤트입니다. Application에서 사용한 자원을 소거하기에 이상적인 장소이기도 합니다.
- Application_Error: 처리되지 않은 Exception이 발생했을 때 호출되는 이벤트입니다.
- Application_Start: HttpApplication의 Instance가 생성될 때마다 실행되는 이벤트입니다. 즉 HttpApplication이 N개면 N번 호출됩니다.
- Application_End: HttpApplication의 Instance가 소거될 때 실행되는 이벤트입니다.
- Application_BeginRequest: 사용자의 Request를 수신했을 때 발생하는 이벤트입니다. 이 이벤트는 Request를 수신했을 때 가장 먼저 호출되는 이벤트이기도 합니다.
- Application_EndRequest: Request 처리 후 가장 마지막에 실행되는 이벤트입니다.
- Application_PreRequestHandlerExecute: ASP.NET Page Framework가 ASP.NET Page 또는 Web Service 들의 Event를 호출하기 전에 실행되는 이벤트입니다.
- Application_PostRequestHandlerExecute: ASP.NET Page Framework가 ASP.NET Page 또는 Web Service 들의 Event를 마쳤을 때 실행되는 이벤트입니다.
- Applcation_PreSendRequestHeaders: ASP.NET Page Framework가 Http Header를 Client로 전송하기 전에 실행되는 Event입니다.
- Application_PreSendContent: ASP.NET Page Framework가 Http Contents를 Client로 전송하기 전에 실행되는 Event입니다.
- Application_AcquireRequestState: ASP.NET Page Framework가 현재 요청과 관련하여 Current State(Session State)를 얻게 되었을 때 호출되는 이벤트입니다.
- Application_ReleaseRequestState: ASP.NET Page Framework가 관계된 모든 Events를 실행하고 난 뒤 호출되는 이벤트입니다. 이 이벤트로 인해 모든 State Modules가 Current State Data를 저장하게 됩니다.
- Application_ResolveRequestCache: Fired when the ASP.NET page framework completes an authorization request. It allows caching modules to serve the request from the cache, thus bypassing handler execution.
- Application_UpdateRequestCache: Fired when the ASP.NET page framework completes handler execution to allow caching modules to store responses to be used to handle subsequent requests.
- Application_AuthenticateRequest: Fired when the security module has established the current user's identity as valid. At this point, the user's credentials have been validated.
- Application_AuthorizeRequest: Fired when the security module has verified that a user can access resources.
- Session_Start: Fired when a new user visits the application Web site.
- Session_End: Fired when a user's session times out, ends, or they leave the application Web site.
이벤트 실행 순서
각 이벤트의 실행 순서는 다음과 같습니다.
- 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
Application_Init, Application_Start가 Application이 시작할 때 한 번씩 실행되며, Application_Dispose, Application_End는 Application이 종료될 때 한번 씩 실행됩니다. Session_Start, Session_End는 각각 Session이 시작될 때와 종료될 때 실행됩니다.
기타 이벤트
Global.asax는 Application의 Events 뿐만 아니라 HTTPModule들의 Events도 정의하실 수 있습니다.
- Profile_OnMigrateAnonymous: Anonymous User를 사용하다가 Login 등 사용자 인증을 진행했을 때 발생하는 이벤트
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args) { //Anonymous User에 대한 Identifier를 삭제합니다. Cookie에서 Anonymous에 대한 정보가 삭제됩니다. AnonymousIdentificationModule.ClearAnonymousIdentifier(); }
- AnonymousIdentification_Creating: Anonymous User가 생성되는 시점에 발생하는 이벤트. 즉 Anonymous User의 Guid가 생성되는 시점에 실행됩니다. 하지만 이 때 Anonymous User를 위한 aspnet_Users가 DB에 생성되는 것은 아니니 참고바랍니다.
public void AnonymousIdentification_Creating(object sender, AnonymousIdentificationEventArgs args) { //Anonymous User의 GUID를 강제할 당 해줄 수 있습니다. args.AnonymousID = "4fe6bc00-03fc-42b3-a194-778f2baf6883"; }
'WEB' 카테고리의 다른 글
[IE] IE의 호환성보기 설정하기 (1) | 2013.03.01 |
---|---|
[ASP.NET] 사용자 환경정보 쉽게 얻기 (0) | 2013.03.01 |
[ASP.NET] 익명사용자를 위한 Profile 구성 (0) | 2012.03.14 |
[IIS7] web.config에서 HttpModules, HttpHandlers 사용 시 오류 처리 (1) | 2011.09.15 |
[Javascript] Javascript 실행 순서 (2) | 2011.08.29 |