HttpApplication Classe

Definição

Define os métodos, propriedades e eventos que são comuns a todos os objetos de aplicação numa aplicação ASP.NET. Esta classe é a classe base para aplicações definidas pelo utilizador no ficheiro 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
Herança
HttpApplication
Implementações

Exemplos

Os dois exemplos seguintes demonstram como usar a HttpApplication aula e os seus eventos. O primeiro exemplo demonstra como criar um módulo HTTP personalizado e ligar um evento a ele. O segundo exemplo demonstra como modificar o ficheiro Web.config.

O exemplo seguinte demonstra como criar um módulo HTTP personalizado e ligar o AcquireRequestState evento ao módulo HTTP. Os módulos HTTP intercetam cada pedido para recursos da aplicação Web, permitindo assim filtrar pedidos do cliente. Qualquer módulo HTTP que subscreva um HttpApplication evento deve implementar a 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

Antes de ocorrer um evento num módulo HTTP personalizado, deve modificar as definições de configuração no ficheiro Web.config para ASP.NET notificar sobre o módulo HTTP. O exemplo seguinte mostra a configuração apropriada na httpModules secção do ficheiro Web.config. A seguinte configuração aplica-se ao modo Clássico do IIS 7.0 e às versões anteriores do 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>

A seguinte definição aplica-se ao modo integrado 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>

Observações

As instâncias da classe HttpApplication são criadas na infraestrutura ASP.NET, não diretamente pelo utilizador. Uma instância da HttpApplication classe é usada para processar muitos pedidos ao longo da sua vida. No entanto, só pode processar um pedido de cada vez. Assim, variáveis membro podem ser usadas para armazenar dados por pedido.

Uma aplicação gera eventos que podem ser tratados por módulos personalizados que implementam a IHttpModule interface ou por código handler de eventos definido no ficheiro Global.asax. Módulos personalizados que implementam a IHttpModule interface podem ser colocados na pasta App_Code ou numa DLL na pasta Bin.

HttpApplication é introduzido na versão 3.5 do .NET Framework. Para mais informações, consulte Versões e Dependências.

Note

Ao executar o IIS 7.0 em modo Integrado, módulos personalizados na pasta App_Code ou na pasta Bin aplicam-se a todos os pedidos no pipeline de pedidos. O código do gestor de eventos no ficheiro Global.asax aplica-se apenas a pedidos que estejam mapeados para um handler ASP.NET.

Os eventos de candidatura são elevados pela seguinte ordem:

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  5. PostAuthorizeRequest

  6. ResolveRequestCache

  7. PostResolveRequestCache

    Após o PostResolveRequestCache evento e antes do PostMapRequestHandler evento, é criado um gestor de eventos (que é uma página que corresponde ao URL do pedido). Quando um servidor está a correr o IIS 7.0 em modo Integrado e pelo menos a versão 3.0 do .NET Framework, é ativado o evento MapRequestHandler. Quando um servidor está a executar o IIS 7.0 em modo Clássico ou numa versão anterior do IIS, este evento não pode ser gerido.

  8. PostMapRequestHandler

  9. AcquireRequestState

  10. PostAcquireRequestState

  11. PreRequestHandlerExecute

    O gestor de eventos é executado.

  12. PostRequestHandlerExecute

  13. ReleaseRequestState

  14. PostReleaseRequestState

    Depois de o PostReleaseRequestState evento ser levantado, quaisquer filtros de resposta existentes irão filtrar a saída.

  15. UpdateRequestCache

  16. PostUpdateRequestCache

  17. LogRequest.

    Este evento é suportado no modo integrado IIS 7.0 e pelo menos no .NET Framework 3.0

  18. PostLogRequest

    Este evento é suportado pelo modo integrado IIS 7.0 e pelo menos pelo .NET Framework 3.0

  19. EndRequest

Construtores

Name Description
HttpApplication()

Inicializa uma nova instância da HttpApplication classe.

Propriedades

Name Description
Application

Obtém o estado atual de uma aplicação.

Context

Obtém informação específica HTTP sobre o pedido atual.

Events

Obtém a lista de delegados handlers de eventos que processam todos os eventos da aplicação.

Modules

Obtém a coleção de módulos para a aplicação atual.

Request

Obtém o objeto de pedido intrínseco para o pedido atual.

Response

Obtém o objeto de resposta intrínseco para o pedido atual.

Server

Obtém o objeto intrínseco do servidor para o pedido atual.

Session

Obtém o objeto intrínseco da sessão que fornece acesso aos dados da sessão.

Site

Obtém ou define uma interface de site para uma IComponent implementação.

User

Obtém o objeto de utilizador intrínseco para o pedido atual.

Métodos

Name Description
AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado AcquireRequestState à coleção de gestores de eventos assíncronos AcquireRequestState para o pedido atual.

AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado AcquireRequestState à coleção de gestores de eventos assíncronos AcquireRequestState para o pedido atual.

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado AuthenticateRequest à coleção de gestores de eventos assíncronos AuthenticateRequest para o pedido atual.

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado AuthenticateRequest à coleção de gestores de eventos assíncronos AuthenticateRequest para o pedido atual.

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado AuthorizeRequest à coleção de gestores de eventos assíncronos AuthorizeRequest para o pedido atual.

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado AuthorizeRequest à coleção de gestores de eventos assíncronos AuthorizeRequest para o pedido atual.

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado BeginRequest à coleção de gestores de eventos assíncronos BeginRequest para o pedido atual.

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado BeginRequest à coleção de gestores de eventos assíncronos BeginRequest para o pedido atual.

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado EndRequest à coleção de gestores de eventos assíncronos EndRequest para o pedido atual.

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado EndRequest à coleção de gestores de eventos assíncronos EndRequest para o pedido atual.

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado LogRequest à coleção de gestores de eventos assíncronos LogRequest para o pedido atual.

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado LogRequest à coleção de gestores de eventos assíncronos LogRequest para o pedido atual.

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado MapRequestHandler à coleção de gestores de eventos assíncronos MapRequestHandler para o pedido atual.

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado MapRequestHandler à coleção de gestores de eventos assíncronos MapRequestHandler para o pedido atual.

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostAcquireRequestState à coleção de gestores de eventos assíncronos PostAcquireRequestState para o pedido atual.

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostAcquireRequestState à coleção de gestores de eventos assíncronos PostAcquireRequestState para o pedido atual.

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostAuthorizeRequest à coleção de gestores de eventos assíncronos PostAuthorizeRequest para o pedido atual.

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostAuthenticateRequest à coleção de gestores de eventos assíncronos PostAuthenticateRequest para o pedido atual.

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o especificado PostAuthorizeRequest à coleção de gestores de eventos assíncronos PostAuthorizeRequest para o pedido atual.

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostAuthorizeRequest à coleção de gestores de eventos assíncronos PostAuthorizeRequest para o pedido atual.

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostLogRequest à coleção de gestores de eventos assíncronos PostLogRequest para o pedido atual.

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostLogRequest à coleção de gestores de eventos assíncronos PostLogRequest para o pedido atual.

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostMapRequestHandler à coleção de gestores de eventos assíncronos PostMapRequestHandler para o pedido atual.

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostMapRequestHandler à coleção de gestores de eventos assíncronos PostMapRequestHandler para o pedido atual.

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostReleaseRequestState à coleção de gestores de eventos assíncronos PostReleaseRequestState para o pedido atual.

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostReleaseRequestState à coleção de gestores de eventos assíncronos PostReleaseRequestState para o pedido atual.

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostRequestHandlerExecute à coleção de gestores de eventos assíncronos PostRequestHandlerExecute para o pedido atual.

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostRequestHandlerExecute à coleção de gestores de eventos assíncronos PostRequestHandlerExecute para o pedido atual.

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostResolveRequestCache à coleção de gestores de eventos assíncronos PostResolveRequestCache para o pedido atual.

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostResolveRequestCache à coleção de gestores de eventos assíncronos PostResolveRequestCache para o pedido atual.

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PostUpdateRequestCache à coleção de gestores de eventos assíncronos PostUpdateRequestCache para o pedido atual.

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PostUpdateRequestCache à coleção de gestores de eventos assíncronos PostUpdateRequestCache para o pedido atual.

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado PreRequestHandlerExecute à coleção de gestores de eventos assíncronos PreRequestHandlerExecute para o pedido atual.

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado PreRequestHandlerExecute à coleção de gestores de eventos assíncronos PreRequestHandlerExecute para o pedido atual.

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado ReleaseRequestState à coleção de gestores de eventos assíncronos ReleaseRequestState para o pedido atual.

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado ReleaseRequestState à coleção de gestores de eventos assíncronos ReleaseRequestState para o pedido atual.

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o handler de eventos especificado ResolveRequestCache à coleção de handlers de eventos assíncronos ResolveRequestCache para o pedido atual.

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adiciona o handler de eventos especificado ResolveRequestCache à coleção de handlers de eventos assíncronos ResolveRequestCache para o pedido atual.

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

Adiciona o evento especificado UpdateRequestCache à coleção de gestores de eventos assíncronos UpdateRequestCache para o pedido atual.

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

Adiciona o evento especificado UpdateRequestCache à coleção de gestores de eventos assíncronos UpdateRequestCache para o pedido atual.

CompleteRequest()

Faz com que ASP.NET contorne todos os eventos e filtragens na cadeia de execução do pipeline HTTP e execute diretamente o evento EndRequest.

Dispose()

Elimina a HttpApplication instância.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetOutputCacheProviderName(HttpContext)

Obtém o nome do fornecedor de cache de saída predefinido que está configurado para um site Web.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetVaryByCustomString(HttpContext, String)

Fornece uma implementação em toda a aplicação da VaryByCustom propriedade.

Init()

Executa código de inicialização personalizado depois de todos os módulos gestores de eventos terem sido adicionados.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnExecuteRequestStep(Action<HttpContextBase,Action>)

Especifica um callback para invocar quando um passo de execução do pedido é executado.

RegisterModule(Type)

Regista um módulo de aplicação.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

evento

Name Description
AcquireRequestState

Ocorre quando o ASP.NET adquire o estado atual (por exemplo, estado da sessão) associado ao pedido atual.

AuthenticateRequest

Ocorre quando um módulo de segurança estabeleceu a identidade do utilizador.

AuthorizeRequest

Ocorre quando um módulo de segurança tem autorização verificada do utilizador.

BeginRequest

Ocorre como o primeiro evento na cadeia de execução do pipeline HTTP quando o ASP.NET responde a um pedido.

Disposed

Ocorre quando a aplicação é descartada.

EndRequest

Ocorre como o último evento na cadeia de execução do pipeline HTTP quando o ASP.NET responde a um pedido.

Error

Ocorre quando uma exceção não tratada é lançada.

LogRequest

Ocorre pouco antes do ASP.NET realizar qualquer registo para o pedido atual.

MapRequestHandler

Ocorre quando o handler é selecionado para responder ao pedido.

PostAcquireRequestState

Ocorre quando o estado do pedido (por exemplo, estado de sessão) associado ao pedido atual foi obtido.

PostAuthenticateRequest

Ocorre quando um módulo de segurança estabeleceu a identidade do utilizador.

PostAuthorizeRequest

Ocorre quando o utilizador do pedido atual foi autorizado.

PostLogRequest

Ocorre quando ASP.NET completou o processamento de todos os gestores de eventos para o evento LogRequest.

PostMapRequestHandler

Ocorre quando o ASP.NET mapeou o pedido atual para o gestor de eventos apropriado.

PostReleaseRequestState

Ocorre quando o ASP.NET concluiu a execução de todos os manipuladores de eventos de pedido e os dados de estado do pedido foram armazenados.

PostRequestHandlerExecute

Ocorre quando o gestor de eventos ASP.NET (por exemplo, uma página ou um serviço Web XML) termina a execução.

PostResolveRequestCache

Ocorre quando o ASP.NET contorna a execução do gestor de eventos atual e permite que um módulo de cache sirva um pedido a partir da cache.

PostUpdateRequestCache

Ocorre quando o ASP.NET termina de atualizar módulos de cache e armazenar respostas que são usadas para servir pedidos subsequentes da cache.

PreRequestHandlerExecute

Ocorre pouco antes do ASP.NET começar a executar um gestor de eventos (por exemplo, uma página ou um serviço Web XML).

PreSendRequestContent

Ocorre pouco antes do ASP.NET enviar conteúdo para o cliente.

PreSendRequestHeaders

Ocorre pouco antes do ASP.NET enviar cabeçalhos HTTP para o cliente.

ReleaseRequestState

Ocorre depois de o ASP.NET terminar de executar todos os handlers de eventos de pedido. Este evento faz com que os módulos de estado guardem os dados de estado atuais.

RequestCompleted

Ocorre quando os objetos geridos associados ao pedido foram libertados.

ResolveRequestCache

Ocorre quando o ASP.NET termina um evento de autorização para permitir que os módulos de cache sirvam pedidos da cache, contornando a execução do gestor de eventos (por exemplo, uma página ou um serviço Web XML).

UpdateRequestCache

Ocorre quando o ASP.NET termina de executar um gestor de eventos para permitir que os módulos de cache armazenem respostas que serão usadas para servir pedidos subsequentes da cache.

Implementações de Interface Explícita

Name Description
IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object)

Inicia uma chamada assíncrona para o gestor de eventos HTTP.

IHttpAsyncHandler.EndProcessRequest(IAsyncResult)

Fornece um método de processo End assíncrono quando o processo termina.

IHttpHandler.IsReusable

Recebe um Boolean valor que indica se outro pedido pode usar o IHttpHandler objeto.

IHttpHandler.ProcessRequest(HttpContext)

Permite o processamento de pedidos HTTP Web por um gestor HTTP personalizado que implementa a IHttpHandler interface.

Aplica-se a

Ver também