Global.asax 란?

Global.asax 파일은 예전 ASP에서 사용되었던 global.asa 파일에서 사용되었던 내용을 .NET 환경에서 사용할 수 있도록 만든 파일입니다. Global 이란 뜻처럼, 전역 데이터를 관리할 수 있을뿐 아니라 웹 사이트의 시작과 종료, 새로운 사용자의 접속 시도 및 접속 종료시 등 여러가지 프로그래밍 코드를 작성할 수 있는 곳입니다.

 

 

어떠한 Event 들이 존재하는가?

아래 그림은 사용자들이 접속시, 실행되는 Event 순서입니다. 

 

그 이외에 Applictaion 이 시작/종료 시 1번만 실행되는 Event

  • Application_Init
  • Application_Start
  • Application_Dispose
  • Application_End

Session 이 시작/종료 될 때 실행되는 Event

  • Session_Start
  • Session_End

 

 

Event 사용 사례

  • Application_Start

HttpApplication 의 Instance가 생성될 때마다 실행되는 이벤트로서, 저는 여기서 라우팅 설정을 많이 해줍니다. 라우팅 설정은 이미 지난 포스팅에 해놨기에 링크만 걸어둡니다.

 

https://cmang9.tistory.com/54

 

라우팅 Routing

라우팅 - 일반적으로 Global.asax 파일의 Application_Start 이벤트 처리기에서 호출되는 메서드에서 경로를 추가합니다. - 응용 프로그램이 시작될 때 경로를 사용할 수 있게 됩니다. 1 2 3 4 5 6 7 8 9 protecte..

cmang9.tistory.com

 

 

  • Application_BeginRequest

사용자의 Request 를 수신했을 때 발생하는 이벤트입니다. Request 를 수신했을 때 가장 먼저 호출되는 이벤트로서 가장 많이 사용됩니다. 제가 유지보수하고 있는 홈페이지는 HTTPS 를 사용하고 있기 때문에 HTTP 로 접근 시, HTTPS 로 리다이렉트 할 수 있게끔 해당 이벤트에서 처리해주고 있습니다.

 

1
2
3
4
5
6
protected void Application_BeginRequest(object sender, EventArgs e) {
  if (!Request.IsSecureConnection && !Request.IsLocal) {
    var path = $"https://{Request.Url.Host}{Request.Url.PathAndQuery}";
    Response.RedirectPermanent(path, true);
  }
}
cs

 

Request.IsSecureConnection : HTTPS 사용여부를 가져오는 속성
Request.IsLocal : 로컬에서 사용 여부를 가져오는 속성

 

두가지 모두 만족하지 않다면, HTTP 로 접근했다고 판단하고 HTTPS 로 리다이렉트해주고 있습니다.

 

+ Recent posts