HttpApplication 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ASP.NET 애플리케이션의 모든 애플리케이션 개체에 공통적인 메서드, 속성 및 이벤트를 정의합니다. 이 클래스는 Global.asax 파일에서 사용자가 정의한 애플리케이션의 기본 클래스입니다.
public ref class HttpApplication : IDisposable, System::ComponentModel::IComponent, System::Web::IHttpAsyncHandler
public class HttpApplication : IDisposable, System.ComponentModel.IComponent, System.Web.IHttpAsyncHandler
type HttpApplication = class
interface IHttpAsyncHandler
interface IHttpHandler
interface IComponent
interface IDisposable
type HttpApplication = class
interface IComponent
interface IDisposable
interface IHttpAsyncHandler
interface IHttpHandler
Public Class HttpApplication
Implements IComponent, IDisposable, IHttpAsyncHandler
- 상속
-
HttpApplication
- 구현
예제
다음 두 예제에서는 클래스와 해당 이벤트를 사용하는 HttpApplication 방법을 보여 줍니다. 첫 번째 예제에서는 사용자 지정 HTTP 모듈을 만들고 이벤트를 연결하는 방법을 보여 줍니다. 두 번째 예제에서는 Web.config 파일을 수정하는 방법을 보여 줍니다.
다음 예제에서는 사용자 지정 HTTP 모듈을 만들고 이벤트를 HTTP 모듈에 AcquireRequestState 연결하는 방법을 보여 줍니다. HTTP 모듈은 각 요청을 웹 애플리케이션 리소스에 가로채 클라이언트 요청을 필터링할 수 있도록 합니다. 이벤트를 구독하는 모든 HTTP 모듈은 인터페이스를 HttpApplicationIHttpModule 구현해야 합니다.
using System;
using System.Web;
namespace Samples.AspNet.CS
{
public class CustomHTTPModule : IHttpModule
{
public CustomHTTPModule()
{
// Class constructor.
}
// Classes that inherit IHttpModule
// must implement the Init and Dispose methods.
public void Init(HttpApplication app)
{
app.AcquireRequestState += new EventHandler(app_AcquireRequestState);
app.PostAcquireRequestState += new EventHandler(app_PostAcquireRequestState);
}
public void Dispose()
{
// Add code to clean up the
// instance variables of a module.
}
// Define a custom AcquireRequestState event handler.
public void app_AcquireRequestState(object o, EventArgs ea)
{
HttpApplication httpApp = (HttpApplication)o;
HttpContext ctx = HttpContext.Current;
ctx.Response.Write(" Executing AcquireRequestState ");
}
// Define a custom PostAcquireRequestState event handler.
public void app_PostAcquireRequestState(object o, EventArgs ea)
{
HttpApplication httpApp = (HttpApplication)o;
HttpContext ctx = HttpContext.Current;
ctx.Response.Write(" Executing PostAcquireRequestState ");
}
}
}
Imports System.Web
Namespace Samples.AspNet.VB
Public Class CustomHTTPModule
Implements IHttpModule
Public Sub New()
' Class constructor.
End Sub
' Classes that inherit IHttpModule
' must implement the Init and Dispose methods.
Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
AddHandler app.AcquireRequestState, AddressOf app_AcquireRequestState
AddHandler app.PostAcquireRequestState, AddressOf app_PostAcquireRequestState
End Sub
Public Sub Dispose() Implements IHttpModule.Dispose
' Add code to clean up the
' instance variables of a module.
End Sub
' Define a custom AcquireRequestState event handler.
Public Sub app_AcquireRequestState(ByVal o As Object, ByVal ea As EventArgs)
Dim httpApp As HttpApplication = CType(o, HttpApplication)
Dim ctx As HttpContext = HttpContext.Current
ctx.Response.Write(" Executing AcquireRequestState ")
End Sub
' Define a custom PostAcquireRequestState event handler.
Public Sub app_PostAcquireRequestState(ByVal o As Object, ByVal ea As EventArgs)
Dim httpApp As HttpApplication = CType(o, HttpApplication)
Dim ctx As HttpContext = HttpContext.Current
ctx.Response.Write(" Executing PostAcquireRequestState ")
End Sub
End Class
End Namespace
사용자 지정 HTTP 모듈의 이벤트가 발생하기 전에 Web.config 파일의 구성 설정을 수정하여 ASP.NET HTTP 모듈에 대해 알려야 합니다. 다음 예제에서는 Web.config 파일의 섹션에 httpModules 있는 적절한 구성 설정을 보여줍니다. 다음 설정은 IIS 7.0 클래식 모드 및 이전 버전의 IIS에 적용됩니다.
<configuration>
<system.web>
<httpModules>
<add type="Samples.AspNet.CS.CustomHTTPModule"
name="CustomHttpModule" />
</httpModules>
</system.web>
</configuration>
<configuration>
<system.web>
<httpModules>
<add type="Samples.AspNet.VB.CustomHTTPModule"
name="CustomHttpModule" />
</httpModules>
</system.web>
</configuration>
다음 설정은 IIS 7.0 통합 모드에 적용됩니다.
<configuration>
<system.webServer>
<modules>
<add type="Samples.AspNet.CS.CustomHTTPModule"
name="CustomHttpModule" />
</modules>
</system.webServer>
</configuration>
<configuration>
<system.webServer>
<modules>
<add type="Samples.AspNet.VB.CustomHTTPModule"
name="CustomHttpModule" />
<modules>
</system.webServer>
</configuration>
설명
HttpApplication 클래스의 인스턴스는 사용자가 직접 만드는 것이 아니라 ASP.NET 인프라에서 만들어집니다. 클래스의 HttpApplication 한 인스턴스는 수명 동안 많은 요청을 처리하는 데 사용됩니다. 그러나 한 번에 하나의 요청만 처리할 수 있습니다. 따라서 멤버 변수를 사용하여 요청당 데이터를 저장할 수 있습니다.
애플리케이션은 인터페이스를 구현 IHttpModule 하는 사용자 지정 모듈 또는 Global.asax 파일에 정의된 이벤트 처리기 코드로 처리할 수 있는 이벤트를 발생합니다. 인터페이스를 구현 IHttpModule 하는 사용자 지정 모듈은 App_Code 폴더 또는 Bin 폴더의 DLL에 배치할 수 있습니다.
HttpApplication .NET Framework 버전 3.5에 도입되었습니다. 자세한 내용은 버전 및 종속성을 참조하세요.
메모
통합 모드에서 IIS 7.0을 실행하는 경우 App_Code 폴더 또는 Bin 폴더의 사용자 지정 모듈이 요청 파이프라인의 모든 요청에 적용됩니다. Global.asax 파일의 이벤트 처리기 코드는 ASP.NET 처리기에 매핑된 요청에만 적용됩니다.
애플리케이션 이벤트는 다음 순서로 발생합니다.
-
이벤트 후 PostResolveRequestCache 및 이벤트 전에 PostMapRequestHandler 이벤트 처리기(요청 URL에 해당하는 페이지)가 만들어집니다. 서버가 통합 모드 및 .NET Framework 버전 3.0에서 IIS 7.0을 실행하는 경우 MapRequestHandler 이벤트가 발생합니다. 서버가 클래식 모드 또는 이전 버전의 IIS에서 IIS 7.0을 실행하는 경우 이 이벤트를 처리할 수 없습니다.
-
이벤트 처리기가 실행됩니다.
-
PostReleaseRequestState 이벤트가 발생한 후 모든 기존 응답 필터가 출력을 필터링합니다.
-
이 이벤트는 IIS 7.0 통합 모드 및 .NET Framework 3.0 이상에서 지원됩니다.
-
이 이벤트는 IIS 7.0 통합 모드 및 .NET Framework 3.0 이상에서 지원됩니다.
생성자
| Name | Description |
|---|---|
| HttpApplication() |
HttpApplication 클래스의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| Application |
애플리케이션의 현재 상태를 가져옵니다. |
| Context |
현재 요청에 대한 HTTP 관련 정보를 가져옵니다. |
| Events |
모든 애플리케이션 이벤트를 처리하는 이벤트 처리기 대리자의 목록을 가져옵니다. |
| Modules |
현재 애플리케이션에 대한 모듈 컬렉션을 가져옵니다. |
| Request |
현재 요청에 대한 기본 요청 개체를 가져옵니다. |
| Response |
현재 요청에 대한 내장 응답 개체를 가져옵니다. |
| Server |
현재 요청에 대한 내장 서버 개체를 가져옵니다. |
| Session |
세션 데이터에 대한 액세스를 제공하는 내장 세션 개체를 가져옵니다. |
| Site |
구현에 대한 사이트 인터페이스를 IComponent 가져오거나 설정합니다. |
| User |
현재 요청에 대한 내장 사용자 개체를 가져옵니다. |
메서드
이벤트
| Name | Description |
|---|---|
| AcquireRequestState |
ASP.NET 현재 요청과 연결된 현재 상태(예: 세션 상태)를 획득할 때 발생합니다. |
| AuthenticateRequest |
보안 모듈이 사용자의 ID를 설정한 경우에 발생합니다. |
| AuthorizeRequest |
보안 모듈에서 사용자 권한 부여를 확인한 경우 발생합니다. |
| BeginRequest |
ASP.NET 요청에 응답할 때 HTTP 파이프라인 실행 체인의 첫 번째 이벤트로 발생합니다. |
| Disposed |
애플리케이션이 삭제될 때 발생합니다. |
| EndRequest |
ASP.NET 요청에 응답할 때 HTTP 파이프라인 실행 체인의 마지막 이벤트로 발생합니다. |
| Error |
처리되지 않은 예외가 throw되면 발생합니다. |
| LogRequest |
ASP.NET 현재 요청에 대한 로깅을 수행하기 직전에 발생합니다. |
| MapRequestHandler |
요청에 응답하기 위해 처리기를 선택할 때 발생합니다. |
| PostAcquireRequestState |
현재 요청과 연결된 요청 상태(예: 세션 상태)를 가져올 때 발생합니다. |
| PostAuthenticateRequest |
보안 모듈이 사용자의 ID를 설정한 경우에 발생합니다. |
| PostAuthorizeRequest |
현재 요청에 대한 사용자에게 권한이 부여되었을 때 발생합니다. |
| PostLogRequest |
ASP.NET LogRequest 이벤트에 대한 모든 이벤트 처리기 처리를 완료한 경우에 발생합니다. |
| PostMapRequestHandler |
ASP.NET 현재 요청을 적절한 이벤트 처리기에 매핑한 경우에 발생합니다. |
| PostReleaseRequestState |
ASP.NET 모든 요청 이벤트 처리기 실행을 완료하고 요청 상태 데이터가 저장되었을 때 발생합니다. |
| PostRequestHandlerExecute |
ASP.NET 이벤트 처리기(예: 페이지 또는 XML 웹 서비스)가 실행을 완료할 때 발생합니다. |
| PostResolveRequestCache |
ASP.NET 현재 이벤트 처리기의 실행을 우회하고 캐싱 모듈이 캐시의 요청을 처리할 수 있게 할 때 발생합니다. |
| PostUpdateRequestCache |
ASP.NET 캐싱 모듈 업데이트 및 캐시에서 후속 요청을 제공하는 데 사용되는 응답 저장을 완료할 때 발생합니다. |
| PreRequestHandlerExecute |
ASP.NET 이벤트 처리기(예: 페이지 또는 XML 웹 서비스) 실행을 시작하기 직전에 발생합니다. |
| PreSendRequestContent |
ASP.NET 클라이언트에 콘텐츠를 보내기 직전에 발생합니다. |
| PreSendRequestHeaders |
ASP.NET 클라이언트에 HTTP 헤더를 보내기 직전에 발생합니다. |
| ReleaseRequestState |
ASP.NET 모든 요청 이벤트 처리기 실행을 완료한 후에 발생합니다. 이 이벤트는 상태 모듈이 현재 상태 데이터를 저장하도록 합니다. |
| RequestCompleted |
요청과 연결된 관리되는 개체가 해제될 때 발생합니다. |
| ResolveRequestCache |
ASP.NET 캐싱 모듈이 이벤트 처리기(예: 페이지 또는 XML 웹 서비스)의 실행을 우회하여 캐시의 요청을 처리할 수 있도록 권한 부여 이벤트를 완료할 때 발생합니다. |
| UpdateRequestCache |
캐싱 모듈이 캐시에서 후속 요청을 제공하는 데 사용할 응답을 저장하도록 하기 위해 ASP.NET 이벤트 처리기 실행을 완료할 때 발생합니다. |
명시적 인터페이스 구현
| Name | Description |
|---|---|
| IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object) |
HTTP 이벤트 처리기에 대한 비동기 호출을 시작합니다. |
| IHttpAsyncHandler.EndProcessRequest(IAsyncResult) |
프로세스가 완료되면 비동기 프로세스 |
| IHttpHandler.IsReusable |
다른 요청이 |
| IHttpHandler.ProcessRequest(HttpContext) |
인터페이스를 구현하는 사용자 지정 HTTP 처리기에서 HTTP 웹 요청을 처리할 IHttpHandler 수 있습니다. |