HttpApplication Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет методы, свойства и события, которые являются общими для всех объектов приложения в приложении 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 и подключить AcquireRequestState событие к модулю HTTP. Модули HTTP перехватывают каждый запрос к ресурсам веб-приложения, тем самым позволяя фильтровать клиентские запросы. Любой HttpApplication модуль HTTP, подписывающийся на событие, должен реализовать IHttpModule интерфейс.
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. В следующем примере показан соответствующий параметр конфигурации в httpModules разделе файла Web.config. Следующий параметр применяется к классическому режиму 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 или библиотеку DLL в папку Bin.
HttpApplication представлен в .NET Framework версии 3.5. Дополнительные сведения см. в разделе "Версии и зависимости".
Note
При запуске IIS 7.0 в интегрированном режиме пользовательские модули в папке App_Code или папке Bin применяются ко всем запросам в конвейере запросов. Код обработчика событий в файле Global.asax применяется только к запросам, сопоставленным с обработчиком ASP.NET.
События приложения создаются в следующем порядке:
-
PostResolveRequestCache После события и перед PostMapRequestHandler событием создается обработчик событий (страница, соответствующая URL-адресу запроса). При запуске сервера IIS 7.0 в интегрированном режиме и по крайней мере .NET Framework версии 3.0 возникает событие MapRequestHandler. Если сервер работает под управлением IIS 7.0 в классическом режиме или более ранней версии IIS, это событие не может быть обработано.
-
Выполняется обработчик событий.
-
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 |
Возвращает встроенный объект пользователя для текущего запроса. |
Методы
| Имя | Описание |
|---|---|
| AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное AcquireRequestState событие в коллекцию асинхронных AcquireRequestState обработчиков событий для текущего запроса. |
| AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное AcquireRequestState событие в коллекцию асинхронных AcquireRequestState обработчиков событий для текущего запроса. |
| AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное AuthenticateRequest событие в коллекцию асинхронных AuthenticateRequest обработчиков событий для текущего запроса. |
| AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное AuthenticateRequest событие в коллекцию асинхронных AuthenticateRequest обработчиков событий для текущего запроса. |
| AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное AuthorizeRequest событие в коллекцию асинхронных AuthorizeRequest обработчиков событий для текущего запроса. |
| AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное AuthorizeRequest событие в коллекцию асинхронных AuthorizeRequest обработчиков событий для текущего запроса. |
| AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное BeginRequest событие в коллекцию асинхронных BeginRequest обработчиков событий для текущего запроса. |
| AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное BeginRequest событие в коллекцию асинхронных BeginRequest обработчиков событий для текущего запроса. |
| AddOnEndRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное EndRequest событие в коллекцию асинхронных EndRequest обработчиков событий для текущего запроса. |
| AddOnEndRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное EndRequest событие в коллекцию асинхронных EndRequest обработчиков событий для текущего запроса. |
| AddOnLogRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное LogRequest событие в коллекцию асинхронных LogRequest обработчиков событий для текущего запроса. |
| AddOnLogRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное LogRequest событие в коллекцию асинхронных LogRequest обработчиков событий для текущего запроса. |
| AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное MapRequestHandler событие в коллекцию асинхронных MapRequestHandler обработчиков событий для текущего запроса. |
| AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное MapRequestHandler событие в коллекцию асинхронных MapRequestHandler обработчиков событий для текущего запроса. |
| AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostAcquireRequestState событие в коллекцию асинхронных PostAcquireRequestState обработчиков событий для текущего запроса. |
| AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostAcquireRequestState событие в коллекцию асинхронных PostAcquireRequestState обработчиков событий для текущего запроса. |
| AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostAuthorizeRequest событие в коллекцию асинхронных PostAuthorizeRequest обработчиков событий для текущего запроса. |
| AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostAuthenticateRequest событие в коллекцию асинхронных PostAuthenticateRequest обработчиков событий для текущего запроса. |
| AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанный PostAuthorizeRequest в коллекцию асинхронных PostAuthorizeRequest обработчиков событий для текущего запроса. |
| AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostAuthorizeRequest событие в коллекцию асинхронных PostAuthorizeRequest обработчиков событий для текущего запроса. |
| AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostLogRequest событие в коллекцию асинхронных PostLogRequest обработчиков событий для текущего запроса. |
| AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostLogRequest событие в коллекцию асинхронных PostLogRequest обработчиков событий для текущего запроса. |
| AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostMapRequestHandler событие в коллекцию асинхронных PostMapRequestHandler обработчиков событий для текущего запроса. |
| AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostMapRequestHandler событие в коллекцию асинхронных PostMapRequestHandler обработчиков событий для текущего запроса. |
| AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostReleaseRequestState событие в коллекцию асинхронных PostReleaseRequestState обработчиков событий для текущего запроса. |
| AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostReleaseRequestState событие в коллекцию асинхронных PostReleaseRequestState обработчиков событий для текущего запроса. |
| AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostRequestHandlerExecute событие в коллекцию асинхронных PostRequestHandlerExecute обработчиков событий для текущего запроса. |
| AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostRequestHandlerExecute событие в коллекцию асинхронных PostRequestHandlerExecute обработчиков событий для текущего запроса. |
| AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostResolveRequestCache событие в коллекцию асинхронных PostResolveRequestCache обработчиков событий для текущего запроса. |
| AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostResolveRequestCache событие в коллекцию асинхронных PostResolveRequestCache обработчиков событий для текущего запроса. |
| AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PostUpdateRequestCache событие в коллекцию асинхронных PostUpdateRequestCache обработчиков событий для текущего запроса. |
| AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PostUpdateRequestCache событие в коллекцию асинхронных PostUpdateRequestCache обработчиков событий для текущего запроса. |
| AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное PreRequestHandlerExecute событие в коллекцию асинхронных PreRequestHandlerExecute обработчиков событий для текущего запроса. |
| AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное PreRequestHandlerExecute событие в коллекцию асинхронных PreRequestHandlerExecute обработчиков событий для текущего запроса. |
| AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное ReleaseRequestState событие в коллекцию асинхронных ReleaseRequestState обработчиков событий для текущего запроса. |
| AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное ReleaseRequestState событие в коллекцию асинхронных ReleaseRequestState обработчиков событий для текущего запроса. |
| AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанный ResolveRequestCache обработчик событий в коллекцию асинхронных ResolveRequestCache обработчиков событий для текущего запроса. |
| AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанный ResolveRequestCache обработчик событий в коллекцию асинхронных ResolveRequestCache обработчиков событий для текущего запроса. |
| AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object) |
Добавляет указанное UpdateRequestCache событие в коллекцию асинхронных UpdateRequestCache обработчиков событий для текущего запроса. |
| AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler) |
Добавляет указанное UpdateRequestCache событие в коллекцию асинхронных UpdateRequestCache обработчиков событий для текущего запроса. |
| CompleteRequest() |
Вызывает ASP.NET обойти все события и фильтрацию в цепочке выполнения конвейера HTTP и напрямую выполнить событие EndRequest. |
| Dispose() |
Удаляет HttpApplication экземпляр. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetOutputCacheProviderName(HttpContext) |
Возвращает имя поставщика выходного кэша по умолчанию, настроенного для веб-сайта. |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| GetVaryByCustomString(HttpContext, String) |
Предоставляет реализацию VaryByCustom свойства на уровне приложения. |
| Init() |
Выполняет пользовательский код инициализации после добавления всех модулей обработчика событий. |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| OnExecuteRequestStep(Action<HttpContextBase,Action>) |
Указывает обратный вызов для вызова при выполнении шага выполнения запроса. |
| RegisterModule(Type) |
Регистрирует модуль приложения. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
События
| Имя | Описание |
|---|---|
| AcquireRequestState |
Происходит, когда ASP.NET получает текущее состояние (например, состояние сеанса), связанное с текущим запросом. |
| AuthenticateRequest |
Происходит, когда модуль безопасности установил удостоверение пользователя. |
| AuthorizeRequest |
Происходит, когда модуль безопасности проверил авторизацию пользователя. |
| BeginRequest |
Происходит как первое событие в цепочке выполнения конвейера HTTP, когда ASP.NET отвечает на запрос. |
| Disposed |
Происходит при удалении приложения. |
| EndRequest |
Происходит как последнее событие в цепочке выполнения конвейера HTTP, когда ASP.NET отвечает на запрос. |
| Error |
Возникает при возникновении необработанного исключения. |
| LogRequest |
Происходит непосредственно перед выполнением ASP.NET ведения журнала для текущего запроса. |
| MapRequestHandler |
Происходит, когда обработчик выбирается для ответа на запрос. |
| PostAcquireRequestState |
Происходит при получении состояния запроса (например, состояния сеанса), связанного с текущим запросом. |
| PostAuthenticateRequest |
Происходит, когда модуль безопасности установил удостоверение пользователя. |
| 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 завершает выполнение обработчика событий, чтобы позволить кэшированию модулей хранить ответы, которые будут использоваться для обслуживания последующих запросов из кэша. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object) |
Инициирует асинхронный вызов обработчика событий HTTP. |
| IHttpAsyncHandler.EndProcessRequest(IAsyncResult) |
Предоставляет асинхронный метод процесса |
| IHttpHandler.IsReusable |
|
| IHttpHandler.ProcessRequest(HttpContext) |
Включает обработку HTTP-веб-запросов пользовательским обработчиком HTTP, реализующим IHttpHandler интерфейс. |