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.

События приложения создаются в следующем порядке:

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  5. PostAuthorizeRequest

  6. ResolveRequestCache

  7. PostResolveRequestCache

    PostResolveRequestCache После события и перед PostMapRequestHandler событием создается обработчик событий (страница, соответствующая URL-адресу запроса). При запуске сервера IIS 7.0 в интегрированном режиме и по крайней мере .NET Framework версии 3.0 возникает событие MapRequestHandler. Если сервер работает под управлением IIS 7.0 в классическом режиме или более ранней версии IIS, это событие не может быть обработано.

  8. PostMapRequestHandler

  9. AcquireRequestState

  10. PostAcquireRequestState

  11. PreRequestHandlerExecute

    Выполняется обработчик событий.

  12. PostRequestHandlerExecute

  13. ReleaseRequestState

  14. PostReleaseRequestState

    PostReleaseRequestState После возникновения события все существующие фильтры отклика отфильтруют выходные данные.

  15. UpdateRequestCache

  16. PostUpdateRequestCache

  17. LogRequest.

    Это событие поддерживается в интегрированном режиме IIS 7.0 и по крайней мере .NET Framework 3.0

  18. PostLogRequest

    Это событие поддерживается в интегрированном режиме IIS 7.0 и по крайней мере .NET Framework 3.0

  19. EndRequest

Конструкторы

Имя Описание
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)

Предоставляет асинхронный метод процесса End после завершения процесса.

IHttpHandler.IsReusable

Boolean Возвращает значение, указывающее, может ли другой запрос использовать IHttpHandler объект.

IHttpHandler.ProcessRequest(HttpContext)

Включает обработку HTTP-веб-запросов пользовательским обработчиком HTTP, реализующим IHttpHandler интерфейс.

Применяется к

См. также раздел