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

Esta explicação passo a passo ilustra a funcionalidade básica de um 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 de um pedido é processado.

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 de exemplo neste tópico acrescenta uma mensagem para a página da Web ASP.NET solicitado no início de qualquer solicitação HTTP. Acrescenta outra mensagem depois que a página foi processada. O módulo inclui um código que garante que ele não adicione um texto a um pedido de qualquer outro tipo de arquivo.

Cada manipulador de eventos é gravado como um método particular do módulo. Quando os eventos registrados são aumentados, ASP.NET chama o manipulador apropriado no módulo, que grava informações para a página da Web 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.

A fim de completar este passo a passo, você vai precisar:

  • ou Visual Web Developer.

O passo a passo também assume 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 ASP.NET.

Para começar, você irá 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.

    ms227673.alert_note(pt-br,VS.90).gif 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#).

    ms227673.alert_note(pt-br,VS.90).gif 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 para o arquivo de 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 compilar, corrija eventuais problemas. O módulo HTTP personalizado deve compilar ou você não será capaz de registrar o módulo.

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

No IIS 7.0, um aplicativo pode ser executado no modo clássico ou integrado. No modo Clássico, as solicitações são processadas basicamente da mesma forma como são no IIS 6.0. No modo integrado, o IIS 7.0 gerencia solicitações usando um oleoduto que lhe permite compartilhar 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 Classic. 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 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.

O processo para registrar um módulo em 7.0 modo integrado do IIS é um pouco diferente do que o processo para o IIS 7.0 modo Classic.

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

  1. Se o site 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 >
    
    ms227673.alert_note(pt-br,VS.90).gif Observação:

    Você também pode registrar o módulo usando o gerenciador do IIS. 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.

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 mais informação, consulte Visão Geral sobre Módulos HTTP e Manipuladores HTTP.

Contribuições da comunidade

Mostrar: