Esta documentación está archivada y no tiene mantenimiento.

Cómo: Crear controladores HTTP sincrónicos

En este tema se muestra el código de un controlador HTTP que realiza el procesamiento sincrónico de solicitudes a recursos en una aplicación ASP.NET cuya dirección URL termina en .sample. En el ejemplo de código se muestra:

  • El código para una clase de controlador HTTP. La clase debe implementar el método ProcessRequest y la propiedad IsReusable.

  • Los elementos que se requieren en un archivo Web.config para registrar el controlador y asignarle la extensión de nombre de archivo .sample.

  • En Servicios de Internet Information Server (IIS), cómo asignar la extensión de nombre de archivo .sample a ASP.NET.

NoteNota

El servidor de desarrollo de ASP.NET dará servicio a la solicitud para el nuevo recurso una vez que el archivo de configuración se cambie para que contenga una referencia al nuevo controlador. Para permitir a IIS dar servicio a la solicitud, vea el procedimiento siguiente.

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 la respuesta se crea de forma dinámica, y no es necesario que exista un archivo con la extensión de nombre de archivo .sample. Para obtener más información sobre cómo interactúa ASP.NET con el servidor Web, vea Ciclo de vida en ASP.NET.

Para crear la clase de controlador HTTP HelloWorldHandler

  1. En el directorio App_Code del sitio Web, cree una clase denominada HelloWorldHandler.

  2. Agregue el código siguiente al archivo de la 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 un controlador HTTP personalizado

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 realizadas a recursos cuya dirección URL finaliza en .sample.

Para registrar un controlador HTTP personalizado en el archivo Web.config

  1. Agregue un archivo Web.config al sitio Web si no lo hay.

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

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

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

Configurar IIS 6.0 para una extensión de controlador HTTP

IIS sólo pasa las solicitudes para ciertos tipos de archivo a ASP.NET para darles servicio. De forma predeterminada, los archivos con extensiones de nombre de archivo como .aspx, .ascx y .asmx se asignan en IIS 6.0 a la extensión ISAPI de ASP.NET (Aspnet_isapi.dll). Sin embargo, si desea que ASP.NET controle las extensiones de dirección URL personalizadas, debe asignar las extensiones en IIS. Para obtener más información, vea Ciclo de vida en ASP.NET.

Para asignar la extensión de nombre de archivo .sample a ASP.NET en IIS 6.0

  1. Abra el Administrador de Servicios de Internet Information Server (IIS).

  2. Haga clic con el botón secundario en el nombre de la aplicación y, a continuación, haga clic en Propiedades.

    NoteNota

    Para obtener instrucciones para crear una aplicación ASP.NET, vea Cómo: Crear y configurar sitios Web ASP.NET locales en IIS.

  3. Haga clic en la ficha Directorio virtual y, a continuación, en Configuración.

  4. En la ficha Asignaciones, haga clic en Agregar.

    Se muestra el cuadro de diálogo Agregar o editar la asignación de extensión a aplicación.

  5. En el cuadro Ejecutable, escriba Aspnet_isapi.dll o vaya a dicho archivo. De forma predeterminada, el archivo está en la ubicación siguiente.

    %windows%\Microsoft.NET\Framework\version\
    
    NoteNota

    Puede obtener la ruta de acceso completa y nombre de archivo de otras asignaciones, por ejemplo la asignación a archivos .aspx.

  6. En el cuadro Extensión, escriba .sample.

  7. Desactive la casilla de verificación Comprobar si el archivo existe.

  8. Haga clic en Aceptar y, a continuación, cierre el Administrador IIS.

Probar el controlador HTTP personalizado

Cuando haya creado y registrado el controlador HTTP personalizado, puede probarlo solicitando un recurso que tenga la extensión de nombre de archivo .sample.

Para probar el controlador HTTP personalizado

  • En el explorador, escriba una dirección URL que indique la aplicación Web y termine en .sample, como:

    http://localhost/SampleApplication/test.sample
    

    Se muestra el texto definido en la clase HelloWorldHandler.

Vea también

Mostrar: