Επεξεργασία

Κοινή χρήση μέσω


HttpApplication Class

Definition

Defines the methods, properties, and events that are common to all application objects in an ASP.NET application. This class is the base class for applications that are defined by the user in the Global.asax file.

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
Inheritance
HttpApplication
Implements

Examples

The following two examples demonstrate how to use the HttpApplication class and its events. The first example demonstrates how to create a custom HTTP module and connect an event to it. The second example demonstrates how to modify the Web.config file.

The following example demonstrates how to create a custom HTTP module and connect the AcquireRequestState event to the HTTP module. HTTP modules intercept each request to Web application resources, thereby allowing you to filter client requests. Any HTTP module that subscribes to an HttpApplication event must implement the IHttpModule interface.

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

Before an event in a custom HTTP module can occur, you must modify the configuration settings in the Web.config file to notify ASP.NET about the HTTP module. The following example shows the appropriate configuration setting in the httpModules section of the Web.config file. The following setting applies to IIS 7.0 Classic mode and to earlier versions of 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>  

The following setting applies to IIS 7.0 Integrated mode.

<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>  

Remarks

Instances of the HttpApplication class are created in the ASP.NET infrastructure, not by the user directly. One instance of the HttpApplication class is used to process many requests in its lifetime. However, it can process only one request at a time. Thus, member variables can be used to store per-request data.

An application raises events that can be handled by custom modules that implement the IHttpModule interface or by event handler code that is defined in the Global.asax file. Custom modules that implement the IHttpModule interface can be put in the App_Code folder or in a DLL in the Bin folder.

HttpApplication is introduced in the .NET Framework version 3.5. For more information, see Versions and Dependencies.

Note

When running IIS 7.0 in Integrated mode, custom modules in the App_Code folder or Bin folder apply to all requests in the request pipeline. Event handler code in the Global.asax file only applies to requests that are mapped to an ASP.NET handler.

The application events are raised in the following order:

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  5. PostAuthorizeRequest

  6. ResolveRequestCache

  7. PostResolveRequestCache

    After the PostResolveRequestCache event and before the PostMapRequestHandler event, an event handler (which is a page that corresponds to the request URL) is created. When a server is running IIS 7.0 in Integrated mode and at least the .NET Framework version 3.0, the MapRequestHandler event is raised. When a server is running IIS 7.0 in Classic mode or an earlier version of IIS, this event cannot be handled.

  8. PostMapRequestHandler

  9. AcquireRequestState

  10. PostAcquireRequestState

  11. PreRequestHandlerExecute

    The event handler is executed.

  12. PostRequestHandlerExecute

  13. ReleaseRequestState

  14. PostReleaseRequestState

    After the PostReleaseRequestState event is raised, any existing response filters will filter the output.

  15. UpdateRequestCache

  16. PostUpdateRequestCache

  17. LogRequest.

    This event is supported in IIS 7.0 Integrated mode and at least the .NET Framework 3.0

  18. PostLogRequest

    This event is supported IIS 7.0 Integrated mode and at least the .NET Framework 3.0

  19. EndRequest

Constructors

HttpApplication()

Initializes a new instance of the HttpApplication class.

Properties

Application

Gets the current state of an application.

Context

Gets HTTP-specific information about the current request.

Events

Gets the list of event handler delegates that process all application events.

Modules

Gets the collection of modules for the current application.

Request

Gets the intrinsic request object for the current request.

Response

Gets the intrinsic response object for the current request.

Server

Gets the intrinsic server object for the current request.

Session

Gets the intrinsic session object that provides access to session data.

Site

Gets or sets a site interface for an IComponent implementation.

User

Gets the intrinsic user object for the current request.

Methods

AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified AcquireRequestState event to the collection of asynchronous AcquireRequestState event handlers for the current request.

AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

Adds the specified AcquireRequestState event to the collection of asynchronous AcquireRequestState event handlers for the current request.

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified AuthenticateRequest event to the collection of asynchronous AuthenticateRequest event handlers for the current request.

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified AuthenticateRequest event to the collection of asynchronous AuthenticateRequest event handlers for the current request.

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified AuthorizeRequest event to the collection of asynchronous AuthorizeRequest event handlers for the current request.

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified AuthorizeRequest event to the collection of asynchronous AuthorizeRequest event handlers for the current request.

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified BeginRequest event to the collection of asynchronous BeginRequest event handlers for the current request.

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified BeginRequest event to the collection of asynchronous BeginRequest event handlers for the current request.

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified EndRequest event to the collection of asynchronous EndRequest event handlers for the current request.

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified EndRequest event to the collection of asynchronous EndRequest event handlers for the current request.

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified LogRequest event to the collection of asynchronous LogRequest event handlers for the current request.

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified LogRequest event to the collection of asynchronous LogRequest event handlers for the current request.

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified MapRequestHandler event to the collection of asynchronous MapRequestHandler event handlers for the current request.

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

Adds the specified MapRequestHandler event to the collection of asynchronous MapRequestHandler event handlers for the current request.

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostAcquireRequestState event to the collection of asynchronous PostAcquireRequestState event handlers for the current request.

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostAcquireRequestState event to the collection of asynchronous PostAcquireRequestState event handlers for the current request.

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostAuthorizeRequest event to the collection of asynchronous PostAuthorizeRequest event handlers for the current request.

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostAuthenticateRequest event to the collection of asynchronous PostAuthenticateRequest event handlers for the current request.

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostAuthorizeRequest to the collection of asynchronous PostAuthorizeRequest event handlers for the current request.

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostAuthorizeRequest event to the collection of asynchronous PostAuthorizeRequest event handlers for the current request.

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostLogRequest event to the collection of asynchronous PostLogRequest event handlers for the current request.

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostLogRequest event to the collection of asynchronous PostLogRequest event handlers for the current request.

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostMapRequestHandler event to the collection of asynchronous PostMapRequestHandler event handlers for the current request.

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostMapRequestHandler event to the collection of asynchronous PostMapRequestHandler event handlers for the current request.

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostReleaseRequestState event to the collection of asynchronous PostReleaseRequestState event handlers for the current request.

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostReleaseRequestState event to the collection of asynchronous PostReleaseRequestState event handlers for the current request.

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostRequestHandlerExecute event to the collection of asynchronous PostRequestHandlerExecute event handlers for the current request.

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostRequestHandlerExecute event to the collection of asynchronous PostRequestHandlerExecute event handlers for the current request.

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostResolveRequestCache event to the collection of asynchronous PostResolveRequestCache event handlers for the current request.

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostResolveRequestCache event to the collection of asynchronous PostResolveRequestCache event handlers for the current request.

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PostUpdateRequestCache event to the collection of asynchronous PostUpdateRequestCache event handlers for the current request.

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adds the specified PostUpdateRequestCache event to the collection of asynchronous PostUpdateRequestCache event handlers for the current request.

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified PreRequestHandlerExecute event to the collection of asynchronous PreRequestHandlerExecute event handlers for the current request.

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

Adds the specified PreRequestHandlerExecute event to the collection of asynchronous PreRequestHandlerExecute event handlers for the current request.

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified ReleaseRequestState event to the collection of asynchronous ReleaseRequestState event handlers for the current request.

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

Adds the specified ReleaseRequestState event to the collection of asynchronous ReleaseRequestState event handlers for the current request.

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified ResolveRequestCache event handler to the collection of asynchronous ResolveRequestCache event handlers for the current request.

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adds the specified ResolveRequestCache event handler to the collection of asynchronous ResolveRequestCache event handlers for the current request.

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adds the specified UpdateRequestCache event to the collection of asynchronous UpdateRequestCache event handlers for the current request.

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adds the specified UpdateRequestCache event to the collection of asynchronous UpdateRequestCache event handlers for the current request.

CompleteRequest()

Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event.

Dispose()

Disposes the HttpApplication instance.

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetOutputCacheProviderName(HttpContext)

Gets the name of the default output-cache provider that is configured for a Web site.

GetType()

Gets the Type of the current instance.

(Inherited from Object)
GetVaryByCustomString(HttpContext, String)

Provides an application-wide implementation of the VaryByCustom property.

Init()

Executes custom initialization code after all event handler modules have been added.

MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
OnExecuteRequestStep(Action<HttpContextBase,Action>)

Specifies a callback to invoke when a request execution step is executed.

RegisterModule(Type)

Registers an application module.

ToString()

Returns a string that represents the current object.

(Inherited from Object)

Events

AcquireRequestState

Occurs when ASP.NET acquires the current state (for example, session state) that is associated with the current request.

AuthenticateRequest

Occurs when a security module has established the identity of the user.

AuthorizeRequest

Occurs when a security module has verified user authorization.

BeginRequest

Occurs as the first event in the HTTP pipeline chain of execution when ASP.NET responds to a request.

Disposed

Occurs when the application is disposed.

EndRequest

Occurs as the last event in the HTTP pipeline chain of execution when ASP.NET responds to a request.

Error

Occurs when an unhandled exception is thrown.

LogRequest

Occurs just before ASP.NET performs any logging for the current request.

MapRequestHandler

Occurs when the handler is selected to respond to the request.

PostAcquireRequestState

Occurs when the request state (for example, session state) that is associated with the current request has been obtained.

PostAuthenticateRequest

Occurs when a security module has established the identity of the user.

PostAuthorizeRequest

Occurs when the user for the current request has been authorized.

PostLogRequest

Occurs when ASP.NET has completed processing all the event handlers for the LogRequest event.

PostMapRequestHandler

Occurs when ASP.NET has mapped the current request to the appropriate event handler.

PostReleaseRequestState

Occurs when ASP.NET has completed executing all request event handlers and the request state data has been stored.

PostRequestHandlerExecute

Occurs when the ASP.NET event handler (for example, a page or an XML Web service) finishes execution.

PostResolveRequestCache

Occurs when ASP.NET bypasses execution of the current event handler and allows a caching module to serve a request from the cache.

PostUpdateRequestCache

Occurs when ASP.NET finishes updating caching modules and storing responses that are used to serve subsequent requests from the cache.

PreRequestHandlerExecute

Occurs just before ASP.NET starts executing an event handler (for example, a page or an XML Web service).

PreSendRequestContent

Occurs just before ASP.NET sends content to the client.

PreSendRequestHeaders

Occurs just before ASP.NET sends HTTP headers to the client.

ReleaseRequestState

Occurs after ASP.NET finishes executing all request event handlers. This event causes state modules to save the current state data.

RequestCompleted

Occurs when the managed objects that are associated with the request have been released.

ResolveRequestCache

Occurs when ASP.NET finishes an authorization event to let the caching modules serve requests from the cache, bypassing execution of the event handler (for example, a page or an XML Web service).

UpdateRequestCache

Occurs when ASP.NET finishes executing an event handler in order to let caching modules store responses that will be used to serve subsequent requests from the cache.

Explicit Interface Implementations

IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object)

Initiates an asynchronous call to the HTTP event handler.

IHttpAsyncHandler.EndProcessRequest(IAsyncResult)

Provides an asynchronous process End method when the process finishes.

IHttpHandler.IsReusable

Gets a Boolean value indicating whether another request can use the IHttpHandler object.

IHttpHandler.ProcessRequest(HttpContext)

Enables processing of HTTP Web requests by a custom HTTP handler that implements the IHttpHandler interface.

Applies to

See also