Esta documentação foi arquivada e não está sendo atualizada.

Introdução aos manipuladores HTTP

Visual Studio 2005

Um manipulador HTTP ASP.NET é o processo (freqüentemente citado como "endpoint") que é executado em resposta a um pedido feito a um aplicativo Web ASP.NET.O manipulador mais comum é o manipulador de páginas ASP.NET que processa arquivos .aspx. Quando o usuário solicitar um arquivo .aspx, a solicitação será processada pela página via manipulador.

O manipulador de página ASP.NET é apenas um tipo de manipulador. ASP.NET vem com vários outros manipuladores internos, como o manipulador de serviço da Web para arquivos.asmx.

Você pode criar manipuladores HTTP personalizados quando você desejar um tratamento especial que você pode identificar usando extensões de nome de arquivo no seu aplicativo.Por exemplo, os seguintes cenários poderiam ser bons para usos dos manipuladores http personalizados:

  • Feeds RSS Para criar uma alimentação RSS para um site, você pode criar um manipulador que emite RSS formatado em XML.Então você pode acoplar a extensão.RSS (por exemplo) em seu aplicativo para o manipulador personalizado.Quando os usuários enviam uma solicitação para seu site que termina em.RSS, ASP.NET chamará o manipulador para processar a solicitação.

  • Servidor imagem Se você quiser que seu aplicativo da Web sirva imagens em uma variedade de tamanhos, você pode gravar um manipulador personalizado para redimensionar imagens e depois enviá-las de volta para o usuário como resposta do manipulador.

Manipuladores HTTP têm acesso ao contexto do aplicativo, incluindo a identidade do usuário solicitante (se conhecido), estado do aplicativo e informações de sessão.Quando for solicitada uma manipulador de HTTP, ASP.NET chama o método ProcessRequest no apropriado manipulador.Método ProcessRequest 's the manipulador creates a resposta, which is sent voltar to the navegador solicitante.Como qualquer solicitação da página, a resposta passa por qualquer módulo HTTP que tenha se inscrito nos eventos que ocorrem depois de ser executado o manipulador.For Mais Informações Sobre the processamento of requests servidor Web, see Visão geral sobre do ciclo de vida do aplicativo ASP.NET.

Um manipulador de HTTP pode ser síncrono ou assíncrono. Um manipulador síncrono não retorna até que ele termine de processar a solicitação HTTP para o qual foi chamado. Um manipulador assíncrono é executado em um processo independente de enviar uma resposta para o utilizador. Manipuladores assíncronos são úteis quando você precisa iniciar um processo do aplicativo que pode ser demorado e o usuário não precisará esperar até que ele terminar antes de obter uma resposta do servidor.

O ASP.NET mapeia solicitações HTTP para manipuladores HTTP baseado em uma extensão de nome de arquivo. Cada manipulador HTTP permite processamento de URLs http individuais ou grupos de extensões URL de um aplicativo. ASP.NET inclui vários manipuladores HTTP, conforme listado na tabela a seguir.

Manipulador

Descrição

Manipulador de página ASP.NET (*.aspx)

O manipulador HTTP padrão para todas as páginas ASP.NET.

Manipulador do serviço da Web (*.asmx)

O manipulador HTTP padrão para páginas de serviço da Web criadas usando ASP.NET.

Manipulador de controle de usuário ASP.NET (*.ascx)

O manipulador HTTP padrão para todas as páginas de controle de usuário ASP.NET.

Manipulador de rastreamento (Trace.axd)

Um manipulador que exibe informações de rastreamento da página atual.Para obter detalhes, consulte Como: View ASP.NET Rastrear Information com the Rastrear Viewer.

To Criar a Personalizar manipulador de HTTP, you Criar a classe that Implements the interface IHttpHandler to Criar a síncrono manipulador or the IHttpAsyncHandler to Criar an assíncrono manipulador.Ambos interfaces manipulador Require you to implementar the propriedade IsReusable and the método ProcessRequest.Especifica a propriedade IsReusable se o objeto IHttpHandlerFactory (o objeto que chama o apropriado, na verdade, manipulador) pode local seus manipuladores em um pool e reutilizá-los para Aumentar desempenho, ou se ele deve criar Novo instâncias cada tempo o manipulador é necessária.O método ProcessRequest é responsável por realmente processamento a individual solicitações HTTP.

Criando uma extensão de nome de arquivo

Quando você Criar um arquivo classe como seu manipulador de HTTP, você pode ter seu responder manipulador para qualquer que não está mapeado já em IIS ASP.NET e extensão de nome de arquivo.De exemplo, se você estiver criando um manipulador de HTTP para gerar uma alimentação RSS, você poderá mapa (n.); mapear (v.) o manipulador para o .RSS extensão.Em ordem para ASP.NET para saber qual manipulador a ser usado para sua Personalizar Nome do Arquivo, a extensão de arquivo classe do manipulador a extensão deve ser mapeada em IIS para ASP.NET e em seu aplicativo para seu Personalizar manipulador.

Por padrão, ASP.NET Mapas the Nome do Arquivo .ashx extensão for Personalizar HTTP handlers, in the same way that it Mapas the extensão .ASPX to the manipulador página ASP.NET.Therefore, If You Criar an classe manipulador de HTTP com the Nome do Arquivo extensão .ashx, is the manipulador automaticamente Registrado com IIS and ASP.NET.

Se você desejar criar um Personalizar extensão de nome de arquivo para seu manipulador, você deve registrar explicitamente a extensão com IIS e ASP.NET.A vantagem de não usar o .ashx Nome do Arquivo seu manipulador extensão é então reutilizável para mapeamentos extensão diferente.Por exemplo, em um aplicativo o manipulador personalizado pode responder às solicitações que terminam em .RSS e em outro aplicativo ele pode responder às solicitações que terminam em .Feed.Como outro exemplo, o manipulador pode ser mapeado para ambas as extensões de nome de arquivo no mesmo aplicativo, mas pode criar respostas diferentes com base na extensão.

Manipuladores HTTP assíncronos permitem que você possa iniciar um processo externo, como uma chamada de método para um servidor remoto e depois continue o processamento do manipulador sem aguardar que o processo externo seja concluído.Durante o processamento de um manipulador HTTP assíncrono, ASP.NET coloca o segmento que normalmente deve ser usado para o processo externo de volta para o pool de segmento até o manipulador receber um retorno de chamada do processo externo.Isso pode prevenir que o segmento bloqueie e melhora bastante o desempenho, porque somente um número limitado de segmentos podem ser executados simultaneamente.Rapidamente se um número de usuários solicitar manipuladores HTTP síncronos que dependam do processos externos, o sistema operacional pode executar fora de segmentos como muitos segmentos são bloqueados e aguardar um processo externo.

When You Criar an assíncrono manipulador, in addition to Implementing the interface IHttpAsyncHandler , You Must implementar the BeginProcessRequest to iniciar an chamada assíncrona for individual processamento requests HTTP.You Must also the método EndProcessRequest implementar to executar limpeza Código when the processo ends.

The classe IHttpHandlerFactory receives requests and is responsible for Forwarding a solicitação to an apropriado manipulador de HTTP.Você pode criar uma fábrica de manipuladores HTTP personalizada, criando uma classe que implementa a interface IHttpHandlerFactory.Creating a Personalizar factory manipulador can Allow Controlar finer over the processamento of an Solicitar HTTP by Creating different handlers based on executar-Condições tempo.Por exemplo, com uma fábrica de manipuladores HTTP personalizada, você pode criar uma instância de um manipulador HTTP de uma tipo de arquivo se o método de solicitação HTTP é PUT, e outro se for o método GET.

Mostrar: