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-модули перехватывают каждый запрос к ресурсам веб-приложения, тем самым позволяя фильтровать клиентские запросы. Любой HTTP-модуль, который подписывается HttpApplication на событие, должен реализовывать 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. Дополнительные сведения см. в статье Версии и зависимости платформы .NET Framework.
Примечание
При запуске 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 |
Получает внутренний объект пользователя для текущего запроса. |
Методы
События
AcquireRequestState |
Происходит при достижении ASP.NET текущего состояния (например, состояния сеанса), связанного с текущим запросом. |
AuthenticateRequest |
Происходит при установлении модулем безопасности удостоверения пользователя. |
AuthorizeRequest |
Происходит после проверки модулем безопасности авторизации пользователя. |
BeginRequest |
Происходит в качестве первого события в цепи выполнения конвейера НТТР при ответе ASP.NET на соответствующий запрос. |
Disposed |
Происходит при удалении приложения. |
EndRequest |
Происходит в качестве последнего события в цепи выполнения конвейера НТТР при ответе 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 |
Происходит непосредственно перед началом выполнения обработчика событий (например страницы или веб-службы XML) в приложении ASP.NET. |
PreSendRequestContent |
Происходит в ASP.NET перед отправкой содержимого клиенту. |
PreSendRequestHeaders |
Происходит в ASP.NET перед отправкой НТТР-заголовков клиенту. |
ReleaseRequestState |
Происходит в ASP.NET после завершения выполнения всех обработчиков событий запроса. При возникновении этого события модули состояния сохраняют данные текущего состояния. |
RequestCompleted |
Возникает, когда управляемые объекты, связанные с запросом, были освобождены. |
ResolveRequestCache |
Происходит в ASP.NET при завершении события авторизации, позволяющего модулям кэширования обрабатывать запросы кэша, игнорируя выполнение обработчика событий (например, страницы или веб-службы XML). |
UpdateRequestCache |
Происходит в ASP.NET при завершении выполнения обработчика событий с целью предоставления возможности модулям кэширования сохранять ответы, которые будут использоваться для обслуживания последующих запросов кэша. |
Явные реализации интерфейса
IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object) |
Запускает асинхронный вызов обработчика событий НТТР. |
IHttpAsyncHandler.EndProcessRequest(IAsyncResult) |
Предоставляет метод |
IHttpHandler.IsReusable |
Получает значение типа |
IHttpHandler.ProcessRequest(HttpContext) |
Разрешает обработку веб-запросов НТТР пользовательским обработчиком HTTP-данных, который реализует интерфейс IHttpHandler. |