Compartilhar via


Passo-a-passo: Criando e Registrando um Módulo HTTP Personalizado

Essa explicação passo-a-passo ilustra a funcionalidade básica de uma módulo HTTP personalizado.Um módulo HTTP for chamado em cada solicitação em resposta para o BeginRequest e EndRequest Os eventos.Como resultado, o módulo é executado antes e depois que uma solicitação é processada.

Se o aplicativo ASP.NET é executado no IIS 6.0, você pode usar módulos http para personalizar solicitações de Recursos que são atendidos pelo ASP.NET.Isso inclui páginas da Web ASP.NET (arquivos .aspx), Web serviços (arquivos .asmx), ASP.NET manipuladores (.ashx arquivos) e quaisquer Tipos de arquivos que você mapeou para o ASP.NET.Se o aplicativo ASP.NET é executado em. IIS 7.0Você pode usar módulos http para personalizar solicitações para quaisquer recursos que servidas pelo IIS.Isso inclui não apenas recursos do ASP.NET, mas arquivos HTML (arquivos .htm ou .html), arquivos gráficos e assim por diante.Para obter mais informações, consulte Ciclo de Vida do Aplicativo ASP.NET uma visão geral para o IIS 5.0 e 6.0 e Uma visão geral do Ciclo de Vida do Aplicativo ASP.NET para o IIS 7.0.

O módulo exemplo contido neste tópico adiciona uma mensagem à página Web do ASP.NET requisitada no início de qualquer solicitação HTTP.Ele adiciona outra mensagem depois que a página foi processada.O módulo inclui código que certifica que ela não adiciona texto a uma solicitação para qualquer outro tipo de arquivo.

Cada manipulador é gravado como um método particular do módulo.Quando os eventos registrados são disparados, o ASP.NET chama o método manipulador apropriado no módulo, que grava informações para o página Web do ASP.NET.

Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:

  • Como criar o código para um módulo HTTP.

  • Como registrar o módulo no arquivo Web.config

Pré-requisitos

A fim de concluir este explicação passo a passo, será necessário:

  • ou Visual Web Developer.

O exame Através também pressupõe que você está trabalhando com o IIS 6.0 ou IIS 7.0.No entanto, você pode ver a funcionalidade do módulo mesmo se você executar o Servidor de Desenvolvimento do ASP.NET.

Criando uma Classe de Módulo HTTP Personalizado

Para começar, você criará um arquivo de classe que implementa o módulo.

Para criar uma classe de módulo HTTP personalizado

  1. Criar um Site ASP.NET ASP.NET e nomeie-identificador.

    Observação:

    Você pode escolher qualquer nome para o site da Web.

  2. Se seu site da Web ainda não tiver uma pasta App_Code, crie uma na raiz do site.

  3. No diretório App_Code,crie um arquivo de classe chamado HelloWorldModule.vb (para Visual Basic) ou HelloWorldModule.cs (para C#).

    Observação:

    Como alternativa, se você estiver usando Visual Studio (Não O Visual Web Developer Express Edition, você pode criar HelloWorldModule Como um projeto biblioteca de classes, compilá-lo e coloque o resultante Assembly no diretório Bin de aplicativo da Web do.

  4. Adicione o seguinte código ao seu arquivo classe:

    Importações Microsoft.VisualBasic Importações Sistema.Web
    
    Público IHttpMódulo Implements HelloWorldMódulo de classe
    
        Público Sub Novo() End Sub
    
        Propriedade readOnly pública ModuleName() como Cadeia de Caracteres obter retornar "HelloWorldModule" End Get End Property
    
        ' Na função de inicialização, registrar para HttpAplicativo ' Eventos adicionando seus manipuladores. Público Sub Init(ByVal Application As HttpApplication) _ Implements AddHandler IHttpModule.Init Application.BeginSolicitar, _ AddressOf AddHandler Me.Application_BeginSolicitar Application.EndSolicitar, _ AddressOf Me.Application_EndSolicitar End Sub
    
        Particular Sub Application_BeginRequest(ByVal Origem As Objeto, _ ByVal e As EventArgs) ' Criar objetos HttpApplication e HttpConTexto ao Acessar ' Propriedades de solicitação e resposta. Dim aplicativo como HttpApplication = DirectCast(Source, _ HttpApplication) Dim contexto como HttpContext = Application.Context filePath As String Dim = extensão As String Dim Context.Request.FilePath = fileExtension.igual a(".aspx") VirtualPathUtility.GetExtension(filePath) se _ Em seguida, Context.Response.Gravar("<H1><Cor da Fonte=Red>" & _ " HelloWorldModule: Beginning de solicitação " & _ " < / fonte > < / H1 > < hr > ") End se End Sub
    
        Aplicativo Dim Private Sub Application_EndRequest(ByVal Source As Object, _ ByVal e As EventArgs) como HttpApplication = DirectCast(Source, _ HttpApplication) Dim contexto como HttpContext = Application.Context filePath As String Dim = extensão As String Dim Context.Request.FilePath = fileExtension.Equals(".aspx") VirtualPathUtility.GetExtension(filePath) se _ Em seguida, Context.Response.Write("<hr><H1><Font Color=Red>" & _ " HelloWorldModule: final da solicitação < / fonte > < / H1 > ") End se End Sub
    
        Público Sub Dispose() Implements System.Web.IHttpModule.Dispose End Sub
    
    End Class
    
    Usando o sistema; Usando System.Web; Classe pública HelloWorldModule: IHttpModule {pública HelloWorldModule() {}
    
        Pública String ModuleName {Get {retorno " HelloWorldModule"; } }
    
        / / Na função de inicialização, registrar para HttpApplication / / eventos adicionando seus manipuladores. Pública void Init(HttpApplication Application) {Application.BeginRequest += (Nova EventHandler(this.Application_BeginRequest)); Application.EndRequest += (Nova EventHandler(this.Application_EndRequest)); }
    
        Particular Application_BeginRequest void (objeto de origem, EventArgs e) {/ / HttpApplication criar e HttpContexto objetos para acessar / / propriedades de solicitação e resposta. Aplicativo HttpApplication = (HttpApplication) de origem; HttpContext contexto = Application.Context; Seqüência de caracteres filePath = Context.Request.FilePath; Seqüência de caracteres Extensão = VirtualPathUtility.GetExtension(filePath); Se (fileExtensão.Equals(".aspx")) {Context.Response.Write("<H1><Font Color=Red>" + " HelloWorldModule: Beginning de solicitação " + " < / fonte > < / H1 > < hr > "); } }
    
        Particular Application_EndRequest void (objeto de origem, EventArgs e) {Aplicativo HttpApplication = (HttpApplication) de origem; HttpContext contexto = Application.Context; Seqüência de caracteres filePath = Context.Request.FilePath; Seqüência de caracteres Extensão = VirtualPathUtility.GetExtension(filePath); Se (fileExtension.Equals(".aspx")) {Context.Response.Write("<hr><H1><Font Color=Red>" + " HelloWorldModule: final da solicitação < / fonte > < / H1 > "); } }
    
        Pública void Dispose() {}}
    
  5. Salve e feche o arquivo de classe.

  6. Na Criar Menu, clique em Criar sites da Web.

    Se o site não for criado, corrija quaisquer problemas.O módulo HTTP personalizado deve compilar ou você não poderá registrar o módulo.

Registrando o Módulo HTTP no Modo Clássico do IIS 6.0 e do IIS 7.0

Após ter criado o HelloWorldModule Classe, você registrar o módulo criando uma entrada no arquivo web.config.Registrar o módulo HTTP permite que ele assine notificações de solicitação de pipeline.

Em IIS 7.0Um aplicativo pode executar no modo clássico ou integrada.No modo Clássico, as solicitações são processadas basicamente da mesma forma como são no IIS 6.0.No modo integrado. IIS 7.0 gerencia solicitações usando um pipeLinha que permite que ele compartilhar as solicitações, módulos e outros recursos com o ASP.NET.

O procedimento para registrar um módulo é diferente no IIS 7.0 Modo clássico e IIS 7.0 Modo integrado.Esta seção descreve o procedimento para o IIS 6.0 e IIS 7.0 Modo clássico.O procedimento para registrar um módulo que está Executando em IIS 7.0 Modo integrado é descrito na Avançar seção.

Para registrar o módulo para o IIS 6.0 e o IIS 7.0 executando no modo Clássico

  1. Se o site da Web ainda não tiver um arquivo Web.config, crie um na raiz do site.

  2. Adicione o seguinte código realçado para o arquivo Web.config:

    < configuração > < system.web >
      < httpModules >    < Adicionar nome = "HelloWorldModule" Tipo = "HelloWorldModule" / >   < / httpModules >
      < /system.web > < / configuração >
    

    O código registra o módulo com o Nome de Classe e o nome do módulo HelloWorldModule.

Registrando o Módulo HTTP no Modo Integrado do IIS 7.0

O processo para registrar um módulo de IIS 7.0 Modo integrado é ligeiramente diferente do que o processo de IIS 7.0 Modo clássico.

Para registrar o módulo para o IIS 7.0 executando no modo Integrado

  1. Se o site da Web ainda não tiver um arquivo Web.config, crie um na raiz do site.

  2. Adicione o seguinte código realçado para o arquivo Web.config:

    < configuração >
    < System.webServidor >  < módulos >    < Adicionar nome = "HelloWorldModule" Tipo = "HelloWorldModule" / >  < / módulos >< /System.webServer >
    < / configuração >
    
    Observação:

    Você também pode registrar o módulo usando IIS Manager.Para obter mais informações, consulte Configuring Modules in IIS 7.0.

    O código registra o módulo com o Nome de Classe e o nome do módulo HelloWorldModule.

Teste o módulo HTTP personalizado

Depois de ter criado e registrado seu módulo HTTP personalizado você pode testá-lo.

Para testar o módulo HTTP personalizado

  1. Adicionar Uma nova página ASP.NET no aplicativo.

  2. Clique com o botão direito do mouse na página você apenas Adicionado e selecione View in Browser.

    O módulo HTTP acrescenta uma seqüência de caracteres até o início e fim da resposta.O módulo é executada automaticamente durante qualquer solicitação para um arquivo cuja extensão é atribuído ao ASP.NET.Para obter mais informações, consulte Visão Geral sobre Módulos HTTP e Manipuladores HTTP.

Consulte também

Conceitos

Ciclo de Vida do Aplicativo ASP.NET uma visão geral para o IIS 5.0 e 6.0

Outros recursos

Introdução aos módulos HTTP