Compartilhar via


Demonstra Passo a passo: Criando e registrando o manipulador HTTP fábricas

A interface IHttpHandlerFactory cria e gerencia manipuladores HTTP para processar solicitações.Portanto, você pode criar uma classe que implementa a interface IHttpHandlerFactory, e em seguida, usar essa classe como um manipulador HTTP.

Criar manipuladores dessa maneira pode exercer um melhor controle sobre o processamento de uma solicitação HTTP.Ele permite que você mapeie uma URL para uma fábrica de manipulador HTTP que cria manipuladores diferentes com base em um conjunto de condições.Por exemplo, com uma fábrica de manipulador HTTP , você pode criar um número limitado de objetos manipuladores HTTP que acessam recursos caros ou limitados, como conexões de banco de dados.Em seguida, você pode reutilizar esses objetos manipuladores em solicitações futuras.

Nessa explicação passo a passo, você criará uma fábrica manipulador HTTP que cria dois manipuladores de recursos que são identificados com a extensão .Sample.Um manipulador funciona com recursos durante uma solicitação HTTP GET, e o outro manipulador funciona com solicitações HTTP POST.O primeiro manipulador é uma instância do manipulador descrito em Passo-a-Passo: Criando um Manipulador HTTP Síncrono.O segundo manipulador é uma instância do manipulador descrito em Demonstra Passo a passo: Criar um manipulador HTTP assíncrono.

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

  • Como criar o código para uma classe de manipulador HTTP

  • Como registrar o factory de manipulador no arquivo Web.config e mapear a extensão de nome de arquivo .sample para ele.

  • Como mapear a extensão .sample para o ASP.NET no

Pré-requisitos

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

  • Visual Studio or Visual Web Developer.

  • Um site da Web ASP.NET que possa ser executado por meio do IIS.

  • IIS 6.0 ou IIS 7.0.

Criando um factory manipulador HTTP personalizado

Para começar, você irá criar uma classe factory manipuladora.

Para criar uma classe de factory de manipulador HTTP

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

  2. Na pasta App_Code, crie uma classe denominada HelloWorldHandler.

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

    Imports System
    Imports System.Web
    
    Class HandlerFactory
        Implements IHttpHandlerFactory
    
        Public Function GetHandler(ByVal context As HttpContext, _
                ByVal requestType As String, ByVal url As [String],_ 
                ByVal pathTranslated As [String]) As IHttpHandler _
                Implements IHttpHandlerFactory.GetHandler
            Dim handlerToReturn As IHttpHandler
            Dim requestType as String = _      
                context.Request.RequestType.ToLower()
            If "get" = requestType Then
                handlerToReturn = New HelloWorldHandler()
            Else
                If "post" = requestType Then
                    handlerToReturn = New HelloWorldAsyncHandler()
                Else
                    handlerToReturn = Nothing
                End If
            End If
            Return handlerToReturn
        End Function
    
        Public Sub ReleaseHandler(ByVal handler As IHttpHandler) _
            Implements IHttpHandlerFactory.ReleaseHandler
        End Sub
    
        Public ReadOnly Property IsReusable() As Boolean
            Get
                Return False
            End Get
        End Property
    End Class
    
    using System;
    using System.Web;
    
    class HandlerFactory : IHttpHandlerFactory
    {
        public IHttpHandler GetHandler(HttpContext context, 
            string requestType, String url, String pathTranslated)
        {
            IHttpHandler handlerToReturn;
            if ("get" == context.Request.RequestType.ToLower())
            {
                handlerToReturn = new HelloWorldHandler();
            }
            else if ("post" == context.Request.RequestType.ToLower())
            {
                handlerToReturn = new HelloWorldAsyncHandler();
            }
            else
            {
                handlerToReturn = null;
            }
            return handlerToReturn;
        }
        public void ReleaseHandler(IHttpHandler handler)
        {
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    

    O código implementa o método GetHandler da interface IHttpHandlerFactory.Se a solicitação for uma solicitação GET, o método retorna a interface manipuladora síncrona.Se a solicitação for uma solicitação POST, o método retorna a interface manipuladora síncrona.

Criar um manipulador HTTP personalizado

O factory de manipulador HTTP personalizado retornará o manipulador síncrono descrito em Passo-a-Passo: Criando um Manipulador HTTP Síncrono, ou o manipulador assíncrono descrito em Demonstra Passo a passo: Criar um manipulador HTTP assíncrono.Você deve criar a classe HelloWorldHandler síncrona e a classe HelloWorldAsyncHandler assíncrona de modo que o factory manipulador HTTP personalizado possa retornar esses manipuladores.

Para criar as classes HelloWorldHandler e HelloWorldAsyncHandler

  1. Na pasta App_Code do site da Web, crie uma classe denominada HelloWorldHandler.

  2. Adicione o código do Passo-a-Passo: Criando um Manipulador HTTP Síncrono para o arquivo de classe.

  3. Na pasta App_Code do site da Web, crie uma classe denominada HelloWorldAsyncHandler.

  4. Adicione o código do Demonstra Passo a passo: Criar um manipulador HTTP assíncrono para o arquivo de classe.

Registrar o factory do manipulador HTTP personalizado no IIS 6,0

Depois de criar a classe de manipulador HTTP personalizada, você deve registrá-la no arquivo Web.config do aplicativo.Isso permite que o ASP.NET use a classe de factory do manipulador para solicitações de serviço feitas para recursos com o extensão de nome de arquivo .Sample.

Há procedimentos diferentes para registrar o manipulador, dependendo se você estiver trabalhando com o IIS 6.0 ou IIS 7.0.Esta seção descreve como registrar um manipulador no IIS 6.0.A próxima seção descreve como registrar um manipulador no IIS 7.0.

Para registrar o factory manipulador no IIS 6.0

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

  2. Adicione o seguinte elemento realçado ao arquivo Web.config.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="GET,POST" path="*.sample"        type="HandlerFactory" />    </httpHandlers>
      </system.web>
    </configuration>
    

    O código registra o factory do manipulador com o nome da classe e o nome do manipulador do HandlerFactory.

  3. Registre um mapeamento de extensão do aplicativo para a extensão de nome de arquivo .sample usando Gerenciador do IIS.For more information, see Como: Configurar uma extensão de manipulador HTTP no IIS.

Registrar o factory do manipulador HTTP personalizado no IIS 7.0

No IIS 7.0, um aplicativo pode executar no modo Clássico ou no modo Integrado.No modo Clássico, as solicitações são processadas da mesma maneira como eles estão no IIS 6.0.No modo integrado, IIS 7.0 gerencia solicitações usando um pipeline que permite que ele compartilhe as solicitações, módulos e outros recursos com o ASP.NET.

Para IIS 7.0, você registrar o factory do manipulador no arquivo web.config ou em Gerenciador do IIS.Devido a administração centralizada no IIS 7.0, as alterações no arquivo Web.config do aplicativo são refletidas na interface Gerenciador do IIS para o aplicativo e vice-versa.Nos procedimentos a seguir, os manipuladores são registrados no arquivo Web.config.

Para registrar o manipulador no IIS 7.0 executando no modo clássico

  1. Se o seu site da Web não tiver um arquivo Web.config, crie um.

  2. Adicione o seguinte elemento realçado ao arquivo Web.config.

    Observação:

    Substitua o caminho correto do arquivo aspnet_isapi.dll.O arquivo .dll está na pasta onde o .NET Framework está instalado.Por padrão, é C:\WINDOWS\Microsoft.NET\Framework\versão.

    <configuration>
      <system.webServer>
        <handlers>      <add  verb="GET,POST" path="*.sample"         name="HandlerFactory"         type="HandlerFactory"         modules="IsapiModule"/>         scriptProcessor="%path%\aspnet_isapi.dll"    </handlers>
      </system.webServer>
    </configuration>
    

    O elemento de configuração registra o factory manipulador personalizado pelo nome da classe e mapeia a extensão de nome de arquivo .sample a esse manipulador.

    Observação:

    Porque você estiver inscrevendo uma extensão de nome de arquivo personalizada, você registra o manipulador tanto na seção handlers como na seção httpHandlers.No modo Clássico, para compatibilidade com versões anteriores, o manipulador é especificado como um módulo ISAPI usando o atributo modules.O caminho da DLL ISAPI do ASP.NET é especificado usando o atributo scriptProcessor.O atributo name é necessário na seção handlers.

Para registrar o manipulador no 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 elemento realçado ao arquivo Web.config.

    <configuration>
      <system.webServer>
        <handlers>      <add verb="GET,POST" path="*.sample"         name="HandlerFactory"        type="HandlerFactory"/>    </handlers>
      </system.webServer>
    </configuration>
    

    O elemento de configuração registra o factory manipulador personalizado pelo nome da classe e mapeia a extensão de nome de arquivo .sample a esse manipulador.

    Observação:

    O registro é feito na seção handlers, mas não na seção httpHandlers.O atributo name é necessário.

Testando o factory manipulador HTTP personalizado

Depois de ter criado e registrado seu factory manipulador HTTP personalizado você pode testá-lo.

Testando o factory manipulador HTTP personalizado

  1. Crie uma página HTML (com um extensão de nome de arquivo de .htm) no seu aplicativo.

  2. Na seção body da página, adicione a seguinte marcação.

    <form action="Sample.sample" method="get">
      <input type="submit" value="Submit to Sample.sample via Get" />
    </form>
    <br />
    <form action="Sample.sample" method="post">
      <input type="submit" value="Submit to Sample.sample via Post" />
    </form>
    
  3. Solicite a página HTML em um navegador.

  4. Clique em um dos botões.

    Quando você clica no botão primeiro, a factory manipulador HTTP responde à solicitação, criando e chamando um manipulador HTTP síncrona.Quando você clica no segundo botão, a factory manipulador HTTP responde à solicitação, criando e chamando um manipulador HTTP assíncrono.

Consulte também

Tarefas

Demonstra Passo a passo: Criar um manipulador HTTP assíncrono

Passo-a-Passo: Criando um Manipulador HTTP Síncrono

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 manipuladores HTTP