0 out of 3 rated this helpful Rate this topic

HttpApplication Class

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.

System.Object
  System.Web.HttpApplication

Namespace:  System.Web
Assembly:  System.Web (in System.Web.dll)
public class HttpApplication : IHttpAsyncHandler, 
	IHttpHandler, IComponent, IDisposable

The HttpApplication type exposes the following members.

  Name Description
Public method HttpApplication Initializes a new instance of the HttpApplication class.
Top
  Name Description
Public property Application Gets the current state of an application.
Public property Context Gets HTTP-specific information about the current request.
Protected property Events Gets the list of event handler delegates that process all application events.
Public property Modules Gets the collection of modules for the current application.
Public property Request Gets the intrinsic request object for the current request.
Public property Response Gets the intrinsic response object for the current request.
Public property Server Gets the intrinsic server object for the current request.
Public property Session Gets the intrinsic session object that provides access to session data.
Public property Site Gets or sets a site interface for an IComponent implementation.
Public property User Gets the intrinsic user object for the current request.
Top
  Name Description
Public method AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler) Adds the specified AcquireRequestState event to the collection of asynchronous AcquireRequestState event handlers for the current request.
Public method AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified AcquireRequestState event to the collection of asynchronous AcquireRequestState event handlers for the current request.
Public method AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified AuthenticateRequest event to the collection of asynchronous AuthenticateRequest event handlers for the current request.
Public method AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified AuthenticateRequest event to the collection of asynchronous AuthenticateRequest event handlers for the current request.
Public method AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified AuthorizeRequest event to the collection of asynchronous AuthorizeRequest event handlers for the current request.
Public method AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified AuthorizeRequest event to the collection of asynchronous AuthorizeRequest event handlers for the current request.
Public method AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified BeginRequest event to the collection of asynchronous BeginRequest event handlers for the current request.
Public method AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified BeginRequest event to the collection of asynchronous BeginRequest event handlers for the current request.
Public method AddOnEndRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified EndRequest event to the collection of asynchronous EndRequest event handlers for the current request.
Public method AddOnEndRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified EndRequest event to the collection of asynchronous EndRequest event handlers for the current request.
Public method AddOnLogRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified LogRequest event to the collection of asynchronous LogRequest event handlers for the current request.
Public method AddOnLogRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified LogRequest event to the collection of asynchronous LogRequest event handlers for the current request.
Public method AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler) Adds the specified MapRequestHandler event to the collection of asynchronous MapRequestHandler event handlers for the current request.
Public method AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified MapRequestHandler event to the collection of asynchronous MapRequestHandler event handlers for the current request.
Public method AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler) Adds the specified PostAcquireRequestState event to the collection of asynchronous PostAcquireRequestState event handlers for the current request.
Public method AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostAcquireRequestState event to the collection of asynchronous PostAcquireRequestState event handlers for the current request.
Public method AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified PostAuthenticateRequest event to the collection of asynchronous PostAuthenticateRequest event handlers for the current request.
Public method AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostAuthorizeRequest event to the collection of asynchronous PostAuthorizeRequest event handlers for the current request.
Public method AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified PostAuthorizeRequest event to the collection of asynchronous PostAuthorizeRequest event handlers for the current request.
Public method AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostAuthorizeRequest to the collection of asynchronous PostAuthorizeRequest event handlers for the current request.
Public method AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler) Adds the specified PostLogRequest event to the collection of asynchronous PostLogRequest event handlers for the current request.
Public method AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostLogRequest event to the collection of asynchronous PostLogRequest event handlers for the current request.
Public method AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler) Adds the specified PostMapRequestHandler event to the collection of asynchronous PostMapRequestHandler event handlers for the current request.
Public method AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostMapRequestHandler event to the collection of asynchronous PostMapRequestHandler event handlers for the current request.
Public method AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler) Adds the specified PostReleaseRequestState event to the collection of asynchronous PostReleaseRequestState event handlers for the current request.
Public method AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostReleaseRequestState event to the collection of asynchronous PostReleaseRequestState event handlers for the current request.
Public method AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler) Adds the specified PostRequestHandlerExecute event to the collection of asynchronous PostRequestHandlerExecute event handlers for the current request.
Public method AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostRequestHandlerExecute event to the collection of asynchronous PostRequestHandlerExecute event handlers for the current request.
Public method AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler) Adds the specified PostResolveRequestCache event to the collection of asynchronous PostResolveRequestCache event handlers for the current request.
Public method AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostResolveRequestCache event to the collection of asynchronous PostResolveRequestCache event handlers for the current request.
Public method AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler) Adds the specified PostUpdateRequestCache event to the collection of asynchronous PostUpdateRequestCache event handlers for the current request.
Public method AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PostUpdateRequestCache event to the collection of asynchronous PostUpdateRequestCache event handlers for the current request.
Public method AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler) Adds the specified PreRequestHandlerExecute event to the collection of asynchronous PreRequestHandlerExecute event handlers for the current request.
Public method AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified PreRequestHandlerExecute event to the collection of asynchronous PreRequestHandlerExecute event handlers for the current request.
Public method AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler) Adds the specified ReleaseRequestState event to the collection of asynchronous ReleaseRequestState event handlers for the current request.
Public method AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified ReleaseRequestState event to the collection of asynchronous ReleaseRequestState event handlers for the current request.
Public method AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler) Adds the specified ResolveRequestCache event handler to the collection of asynchronous ResolveRequestCache event handlers for the current request.
Public method AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified ResolveRequestCache event handler to the collection of asynchronous ResolveRequestCache event handlers for the current request.
Public method AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler) Adds the specified UpdateRequestCache event to the collection of asynchronous UpdateRequestCache event handlers for the current request.
Public method AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) Adds the specified UpdateRequestCache event to the collection of asynchronous UpdateRequestCache event handlers for the current request.
Public method CompleteRequest Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event.
Public method Dispose Disposes the HttpApplication instance.
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetOutputCacheProviderName Gets the name of the default output-cache provider that is configured for a Web site.
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method GetVaryByCustomString Provides an application-wide implementation of the VaryByCustom property.
Public method Init Executes custom initialization code after all event handler modules have been added.
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Public event AcquireRequestState Occurs when ASP.NET acquires the current state (for example, session state) that is associated with the current request.
Public event AuthenticateRequest Occurs when a security module has established the identity of the user.
Public event AuthorizeRequest Occurs when a security module has verified user authorization.
Public event BeginRequest Occurs as the first event in the HTTP pipeline chain of execution when ASP.NET responds to a request.
Public event Disposed Occurs when the application is disposed.
Public event EndRequest Occurs as the last event in the HTTP pipeline chain of execution when ASP.NET responds to a request.
Public event Error Occurs when an unhandled exception is thrown.
Public event LogRequest Occurs just before ASP.NET performs any logging for the current request.
Public event MapRequestHandler Infrastructure. Occurs when the handler is selected to respond to the request.
Public event PostAcquireRequestState Occurs when the request state (for example, session state) that is associated with the current request has been obtained.
Public event PostAuthenticateRequest Occurs when a security module has established the identity of the user.
Public event PostAuthorizeRequest Occurs when the user for the current request has been authorized.
Public event PostLogRequest Occurs when ASP.NET has completed processing all the event handlers for the LogRequest event.
Public event PostMapRequestHandler Occurs when ASP.NET has mapped the current request to the appropriate event handler.
Public event PostReleaseRequestState Occurs when ASP.NET has completed executing all request event handlers and the request state data has been stored.
Public event PostRequestHandlerExecute Occurs when the ASP.NET event handler (for example, a page or an XML Web service) finishes execution.
Public event PostResolveRequestCache Occurs when ASP.NET bypasses execution of the current event handler and allows a caching module to serve a request from the cache.
Public event PostUpdateRequestCache Occurs when ASP.NET finishes updating caching modules and storing responses that are used to serve subsequent requests from the cache.
Public event PreRequestHandlerExecute Occurs just before ASP.NET starts executing an event handler (for example, a page or an XML Web service).
Public event PreSendRequestContent Occurs just before ASP.NET sends content to the client.
Public event PreSendRequestHeaders Occurs just before ASP.NET sends HTTP headers to the client.
Public event ReleaseRequestState Occurs after ASP.NET finishes executing all request event handlers. This event causes state modules to save the current state data.
Public event 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).
Public event 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.
Top
  Name Description
Explicit interface implemetation Private method IHttpAsyncHandler.BeginProcessRequest Initiates an asynchronous call to the HTTP event handler.
Explicit interface implemetation Private method IHttpAsyncHandler.EndProcessRequest Provides an asynchronous process End method when the process finishes.
Explicit interface implemetation Private property IHttpHandler.IsReusable Gets a Boolean value indicating whether another request can use the IHttpHandler object.
Explicit interface implemetation Private method IHttpHandler.ProcessRequest Enables processing of HTTP Web requests by a custom HTTP handler that implements the IHttpHandler interface.
Top

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 .NET Framework Versions and Dependencies.

Note 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

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 ");
		}

	}
}


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>

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>

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(2000 characters remaining)
Community Content Add
Annotations FAQ