HttpApplication Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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:
-
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.
-
The event handler is executed.
-
After the PostReleaseRequestState event is raised, any existing response filters will filter the output.
-
This event is supported in IIS 7.0 Integrated mode and at least the .NET Framework 3.0
-
This event is supported IIS 7.0 Integrated mode and at least the .NET Framework 3.0
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 |
IHttpHandler.IsReusable |
Gets a |
IHttpHandler.ProcessRequest(HttpContext) |
Enables processing of HTTP Web requests by a custom HTTP handler that implements the IHttpHandler interface. |