Поделиться через


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.

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

  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)

Добавляет заданное событие AcquireRequestState в коллекцию обработчиков асинхронных событий AcquireRequestState текущего запроса.

AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие AcquireRequestState в коллекцию обработчиков асинхронных событий AcquireRequestState текущего запроса.

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие AuthenticateRequest в коллекцию обработчиков асинхронных событий AuthenticateRequest текущего запроса.

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие AuthenticateRequest в коллекцию обработчиков асинхронных событий AuthenticateRequest текущего запроса.

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие AuthorizeRequest в коллекцию обработчиков асинхронных событий AuthorizeRequest текущего запроса.

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие AuthorizeRequest в коллекцию обработчиков асинхронных событий AuthorizeRequest текущего запроса.

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие BeginRequest в коллекцию обработчиков асинхронных событий BeginRequest текущего запроса.

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие BeginRequest в коллекцию обработчиков асинхронных событий BeginRequest текущего запроса.

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие EndRequest в коллекцию обработчиков асинхронных событий EndRequest текущего запроса.

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие EndRequest в коллекцию обработчиков асинхронных событий EndRequest текущего запроса.

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие LogRequest в коллекцию обработчиков асинхронных событий LogRequest текущего запроса.

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие LogRequest в коллекцию обработчиков асинхронных событий LogRequest текущего запроса.

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие MapRequestHandler в коллекцию обработчиков асинхронных событий MapRequestHandler текущего запроса.

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие MapRequestHandler в коллекцию обработчиков асинхронных событий MapRequestHandler текущего запроса.

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostAcquireRequestState в коллекцию обработчиков асинхронных событий PostAcquireRequestState текущего запроса.

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostAcquireRequestState в коллекцию обработчиков асинхронных событий PostAcquireRequestState текущего запроса.

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostAuthenticateRequest в коллекцию обработчиков асинхронных событий PostAuthenticateRequest текущего запроса.

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostAuthorizeRequest в коллекцию обработчиков асинхронных событий PostAuthorizeRequest текущего запроса.

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostAuthorizeRequest в коллекцию обработчиков асинхронных событий PostAuthorizeRequest текущего запроса.

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostAuthorizeRequest в коллекцию обработчиков асинхронных событий PostAuthorizeRequest текущего запроса.

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostLogRequest в коллекцию обработчиков асинхронных событий PostLogRequest текущего запроса.

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostLogRequest в коллекцию обработчиков асинхронных событий PostLogRequest текущего запроса.

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostMapRequestHandler в коллекцию обработчиков асинхронных событий PostMapRequestHandler текущего запроса.

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostMapRequestHandler в коллекцию обработчиков асинхронных событий PostMapRequestHandler текущего запроса.

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostReleaseRequestState в коллекцию обработчиков асинхронных событий PostReleaseRequestState текущего запроса.

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostReleaseRequestState в коллекцию обработчиков асинхронных событий PostReleaseRequestState текущего запроса.

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostRequestHandlerExecute в коллекцию обработчиков асинхронных событий PostRequestHandlerExecute текущего запроса.

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostRequestHandlerExecute в коллекцию обработчиков асинхронных событий PostRequestHandlerExecute текущего запроса.

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostResolveRequestCache в коллекцию обработчиков асинхронных событий PostResolveRequestCache текущего запроса.

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostResolveRequestCache в коллекцию обработчиков асинхронных событий PostResolveRequestCache текущего запроса.

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PostUpdateRequestCache в коллекцию обработчиков асинхронных событий PostUpdateRequestCache текущего запроса.

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PostUpdateRequestCache в коллекцию обработчиков асинхронных событий PostUpdateRequestCache текущего запроса.

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие PreRequestHandlerExecute в коллекцию обработчиков асинхронных событий PreRequestHandlerExecute текущего запроса.

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие PreRequestHandlerExecute в коллекцию обработчиков асинхронных событий PreRequestHandlerExecute текущего запроса.

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие ReleaseRequestState в коллекцию обработчиков асинхронных событий ReleaseRequestState текущего запроса.

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие ReleaseRequestState в коллекцию обработчиков асинхронных событий ReleaseRequestState текущего запроса.

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие ResolveRequestCache в коллекцию обработчиков асинхронных событий ResolveRequestCache текущего запроса.

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие ResolveRequestCache в коллекцию обработчиков асинхронных событий ResolveRequestCache текущего запроса.

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

Добавляет заданное событие UpdateRequestCache в коллекцию обработчиков асинхронных событий UpdateRequestCache текущего запроса.

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Добавляет заданное событие 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

Происходит в качестве первого события в цепи выполнения конвейера НТТР при ответе 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)

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

IHttpHandler.IsReusable

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

IHttpHandler.ProcessRequest(HttpContext)

Разрешает обработку веб-запросов НТТР пользовательским обработчиком HTTP-данных, который реализует интерфейс IHttpHandler.

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

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