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가 생성될 때마다 실행되는 이벤트로서, 저는 여기서 라우팅 설정을 많이 해줍니다. 라우팅 설정은 이미 지난 포스팅에 해놨기에 링크만 걸어둡니다.
- 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 로 리다이렉트해주고 있습니다.
'개발 > ASP.NET' 카테고리의 다른 글
[ASP.NET] Debug/Release에 따라 ConnectionString 변경해보자. (6) | 2019.11.21 |
---|---|
[ASP.NET] 404 / 500 Error 일때, Web.config를 이용하자! (2) | 2019.10.10 |
Server.Transfer vs Response.redirect 무엇이 다를까? (2) | 2019.08.12 |
NameValueCollection foreach문 사용 (0) | 2018.08.03 |
Web.config 변수 설정 (0) | 2018.08.02 |