Tutorial: Crear un controlador HTTP sincrónico

Actualización: noviembre 2007

Este tutorial muestra cómo crear un controlador HTTP que realiza el procesamiento sincrónico de solicitudes. El controlador del ejemplo procesa las solicitudes de los recursos de una aplicación ASP.NET cuya dirección URL finaliza con .sample.

Cuando los usuarios solicitan un recurso cuya dirección URL termina en .sample, el servidor Web envía la solicitud a ASP.NET. A continuación, ASP.NET llama al controlador HTTP, que devuelve una respuesta. El controlador crea dinámicamente la respuesta. No es necesario que existe ningún archivo con la extensión de nombre de archivo .sample.

Para obtener más información sobre cómo interactúa el motor en tiempo de ejecución de ASP.NET con IIS 6.0, vea Información general sobre el ciclo de vida de una aplicación ASP.NET para IIS 5.0 y 6.0. Para obtener más información sobre la integración de ASP.NET con IIS 7.0, vea Información general sobre el ciclo de vida de una aplicación ASP.NET para IIS 7.0.

Las tareas ilustradas en este tutorial incluyen lo siguiente:

  • Cómo crear el código para una clase de controladores HTTP. La clase debe implementar el método ProcessRequest y la propiedad IsReusable.

  • Cómo registrar el controlador en el archivo Web.config y asignarle la extensión de nombre de archivo .sample.

  • Cómo asignar la extensión de nombre de archivo .sample a ASP.NET en Internet Information Services (IIS).

    Nota:

    El servidor de desarrollo de ASP.NET dará servicio a la solicitud del recurso una vez que el archivo de configuración se cambie para que contenga una referencia al nuevo controlador. Para obtener información detallada sobre el servidor de desarrollo de ASP.NET, vea Servidores Web en Visual Web Developer. Para permitir a IIS atender la solicitud, vea los procedimientos incluidos más adelante en este tutorial.

Requisitos previos

Para poder completar este tutorial, necesitará:

  • Visual Studio o Visual Web Developer.

  • Un sitio web de ASP.NET que se pueda ejecutar mediante IIS.

  • IIS 6.0 o IIS 7.0.

Crear un clase de controlador HTTP sincrónico

Para crear la clase de controlador HTTP HelloWorldHandler

  1. Si aún no tiene una carpeta App_Code en el sitio web con el que trabaja, créela bajo la raíz del sitio.

  2. En el directorio App_Code, cree una clase denominada HelloWorldHandler y agregue el código siguiente al archivo de clase.

    Imports System.Web
    
    Public Class HelloWorldHandler
        Implements IHttpHandler
    
        Public Sub ProcessRequest(ByVal context As _
                System.Web.HttpContext) Implements _
                System.Web.IHttpHandler.ProcessRequest
            Dim request As HttpRequest = context.Request
            Dim response As HttpResponse = context.Response
            ' This handler is called whenever a file ending 
            ' in .sample is requested. A file with that extension
            ' does not need to exist.
            response.Write("<html>")
            response.Write("<body>")
            response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>")
            response.Write("</body>")
            response.Write("</html>")
        End Sub
    
        Public ReadOnly Property IsReusable() As Boolean _
                Implements System.Web.IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    End Class
    
    using System.Web;
    public class HelloWorldHandler : IHttpHandler
    {
        public HelloWorldHandler()
        {
        }
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;
            HttpResponse Response = context.Response;
            // This handler is called whenever a file ending 
            // in .sample is requested. A file with that extension
            // does not need to exist.
            Response.Write("<html>");
            Response.Write("<body>");
            Response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>");
            Response.Write("</body>");
            Response.Write("</html>");
        }
        public bool IsReusable
        {
            // To enable pooling, return true here.
            // This keeps the handler in memory.
            get { return false; }
        }
    }
    

    El código implementa el método ProcessRequest y escribe una cadena en la propiedad Response del objeto HttpContext actual.

Registrar el controlador HTTP personalizado en IIS 6.0

Después de haber creado la clase de controlador HTTP personalizado, debe registrarlo en el archivo Web.config de la aplicación. Esto permite a ASP.NET buscar el controlador cuando recibe solicitudes a recursos cuya dirección URL finaliza en .sample.

Hay distintos procedimientos para registrar el controlador, en función de si se trabaja con IIS 6.0 o IIS 7.0. En esta sección se describe cómo registrar un controlador en IIS 6.0. En la sección siguiente se describe cómo registrar un controlador en IIS 7.0.

Para registrar el controlador en IIS 6.0

  1. Si aún no hay un archivo web.config en el sitio web, créelo bajo la raíz del sitio.

  2. Agregue el siguiente elemento resaltado al archivo Web.config.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="*" path="*.sample"         type="HelloWorldHandler"/>    </httpHandlers>
      </system.web>
    </configuration>
    

    El elemento de configuración registra el controlador personalizado por nombre de clase y le asigna la extensión de nombre de archivo .sample.

    Registre una asignación de extensión de aplicación para la extensión de nombre de archivo .sample mediante IIS Manager. Para obtener más información, consulte Cómo: Configurar una extensión de controlador HTTP en IIS.

Registrar el controlador HTTP personalizado en IIS 7.0

En IIS 7.0, una aplicación se puede ejecutar en modo clásico o integrado. En modo clásico, las solicitudes se procesan de la misma forma que en IIS 6.0. En modo integrado, IIS 7.0 administra las solicitudes mediante una canalización que le permite compartir solicitudes, módulos y otras características con ASP.NET.

En IIS 7.0, el registro del controlador requiere su registro en el archivo Web.config o en IIS Manager. Gracias a la administración centralizada en IIS 7.0, los cambios en el archivo web.config de una aplicación se reflejan en la interfaz de IIS Manager de la aplicación y viceversa. En los procedimientos siguientes, los controladores se registran en el archivo web.config.

Hay procedimientos diferentes para registrar el controlador si IIS 7.0 se ejecuta en modo clásico o integrado. Siga el procedimiento para el modo de IIS que utilice.

Para registrar el controlador en el modo clásico de IIS 7.0

  1. Si aún no hay un archivo web.config en el sitio web, créelo bajo la raíz del sitio.

  2. Agregue el siguiente elemento resaltado al archivo Web.config.

    Nota:

    Sustituya la ruta de acceso correcta del archivo aspnet_isapi.dll. El archivo .dll se encuentra en la carpeta donde está instalado .NET Framework. De forma predeterminada, es C:\WINDOWS\Microsoft.NET\Framework\versión.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="*" path="*.sample"         type="HelloWorldHandler"/>    </httpHandlers>
      </system.web>
        <system.webServer>
            <handlers>            <add  verb="*" path="*.sample"                  name="HelloWorldHandler"                  type="HelloWorldHandler"                  modules="IsapiModule"/>                  scriptProcessor="%path%\aspnet_isapi.dll"        </handlers>
        </system.webServer>
    </configuration>
    

    El elemento de configuración registra el controlador personalizado por nombre de clase y le asigna la extensión de nombre de archivo .sample.

    Nota:

    Como va a registrar una extensión de nombre de archivo personalizada, debe registrar el controlador en las secciones handlers y httpHandlers. En modo clásico, por compatibilidad con versiones anteriores, el controlador se especifica como módulo ISAPI mediante el atributo modules. La ruta de acceso del archivo dll ISAPI de ASP.NET se especifica mediante el atributo scriptProcessor. El atributo name es necesario en la sección handlers.

Para registrar el controlador en el modo integrado de IIS 7.0

  1. Si aún no hay un archivo web.config en el sitio web, créelo bajo la raíz del sitio.

  2. Agregue el siguiente elemento resaltado al archivo Web.config.

    <configuration>
      <system.webServer>
        <handlers>      <add verb="*" path="*.sample"         name="HelloWorldHandler"        type="HelloWorldHandler"/>    </handlers>
      </system.webServer>
    </configuration>
    

    El elemento de configuración registra el controlador personalizado por nombre de clase y le asigna la extensión de nombre de archivo .sample.

    Nota:

    El registro se realiza en la sección handlers, pero no en la sección httpHandlers. El atributo name es necesario.

Probar el controlador HTTP personalizado

Después de crear y registrar el controlador HTTP personalizado, puede probarlo.

Para probar el controlador HTTP personalizado

  1. En el explorador, solicite la página a la aplicación web.

  2. En el explorador, escriba una dirección URL que finalice en .sample. Por ejemplo, escriba lo siguiente:

    https://localhost/SampleApplication/test.sample
    

    Se muestra el texto definido en la clase HelloWorldHandler.

Vea también

Tareas

Cómo: Crear un controlador HTTP asincrónico

Conceptos

Información general sobre el ciclo de vida de una aplicación ASP.NET para IIS 5.0 y 6.0

Otros recursos

Ciclo de vida en ASP.NET