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 한 instance 수명 동안 많은 요청을 처리하는 데 사용됩니다. 그러나 한 번에 하나의 요청만 처리할 수 있습니다. 따라서 멤버 변수를 사용하여 요청당 데이터를 저장할 수 있습니다.
애플리케이션을 구현 하는 사용자 지정 모듈에 의해 처리 될 수 있는 이벤트를 발생 시킵니다.는 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에 해당하는 페이지)가 만들어집니다. 서버가 통합 모드에서 IIS 7.0을 실행하고 .NET Framework 버전 3.0 이상인 MapRequestHandler 경우 이벤트가 발생합니다. 서버가 클래식 모드 또는 이전 버전의 IIS에서 IIS 7.0을 실행하는 경우 이 이벤트를 처리할 수 없습니다.
-
이벤트 처리기가 실행됩니다.
-
PostReleaseRequestState 이벤트가 발생한 후 모든 기존 응답 필터가 출력을 필터링합니다.
-
이 이벤트는 IIS 7.0 통합 모드 및 .NET Framework 3.0 이상에서 지원됩니다.
-
이 이벤트는 IIS 7.0 통합 모드 및 최소 .NET Framework 3.0에서 지원됩니다.
생성자
HttpApplication() |
HttpApplication 클래스의 새 인스턴스를 초기화합니다. |
속성
Application |
애플리케이션의 현재 상태를 가져옵니다. |
Context |
현재 요청에 대한 HTTP 관련 정보를 가져옵니다. |
Events |
모든 애플리케이션 이벤트를 처리하는 이벤트 처리기 대리자 목록을 가져옵니다. |
Modules |
현재 애플리케이션에 대한 모듈의 컬렉션을 가져옵니다. |
Request |
현재 요청에 대한 내장 요청 개체를 가져옵니다. |
Response |
현재 요청에 대한 내장 응답 개체를 가져옵니다. |
Server |
현재 요청에 대한 내장 서버 개체를 가져옵니다. |
Session |
세션 데이터에 대한 액세스를 제공하는 내장 세션 개체를 가져옵니다. |
Site |
IComponent 구현을 위한 사이트 인터페이스를 가져오거나 설정합니다. |
User |
현재 요청에 대한 내장 사용자 개체를 가져옵니다. |
메서드
이벤트
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 Web services)가 실행을 완료하는 경우 발생합니다. |
PostResolveRequestCache |
ASP.NET에서 현재 이벤트 처리기의 실행을 무시하고 캐싱 모듈에서 캐시 요청을 처리하도록 허용하는 경우 발생합니다. |
PostUpdateRequestCache |
ASP.NET에서 캐싱 모듈의 업데이트 및 캐시의 다음 요청을 처리하는 데 사용되는 응답의 저장을 완료하는 경우 발생합니다. |
PreRequestHandlerExecute |
ASP.NET에서 페이지 또는 XML Web services 같은 이벤트 처리기의 실행을 시작하기 바로 전에 발생합니다. |
PreSendRequestContent |
ASP.NET에서 클라이언트로 내용을 보내기 바로 전에 발생합니다. |
PreSendRequestHeaders |
ASP.NET에서 클라이언트로 HTTP 헤더를 보내기 바로 전에 발생합니다. |
ReleaseRequestState |
ASP.NET에서 모든 요청 이벤트 처리기 실행을 완료한 후 발생합니다. 이 이벤트는 상태 모듈이 현재 상태 데이터를 저장할 수 있도록 합니다. |
RequestCompleted |
요청과 연결된 관리되는 개체를 해제한 경우 발생합니다. |
ResolveRequestCache |
ASP.NET에서 인증 이벤트를 완료하여 이벤트 처리기(예: 페이지 또는 XML Web services)의 실행을 무시하고 캐싱 모듈이 캐시 요청을 처리하도록 하는 경우 발생합니다. |
UpdateRequestCache |
ASP.NET이 이벤트 처리기 실행을 완료하여 캐싱 모듈이 캐시의 다음 요청을 처리하는 데 사용할 응답을 저장하도록 하는 경우 발생합니다. |
명시적 인터페이스 구현
IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object) |
HTTP 이벤트 처리기에 대한 비동기 호출을 시작합니다. |
IHttpAsyncHandler.EndProcessRequest(IAsyncResult) |
처리가 완료될 때 비동기 프로세스 |
IHttpHandler.IsReusable |
다른 요청에서 IHttpHandler 개체를 사용할 수 있는지 여부를 나타내는 |
IHttpHandler.ProcessRequest(HttpContext) |
IHttpHandler 인터페이스를 구현하는 사용자 지정 HTTP 처리기를 사용하여 HTTP 웹 요청을 처리할 수 있도록 합니다. |
적용 대상
추가 정보
.NET