Condividi tramite


Procedura dettagliata: creazione di un gestore HTTP sincrono

Aggiornamento: novembre 2007

In questa procedura dettagliata viene illustrato come creare un gestore HTTP che esegue l'elaborazione sincrona delle richieste. Il gestore di esempio elabora le richieste per risorse di un'applicazione ASP.NET il cui URL termina con l'estensione SAMPLE.

Quando gli utenti richiedono una risorsa il cui URL termina con SAMPLE, il server Web inoltra la richiesta ad ASP.NET che a sua volta chiama il gestore HTTP che restituisce una risposta. La risposta viene creata in modo dinamico dal gestore. Non vi è alcuna necessità di un file che abbia l'estensione SAMPLE.

Per ulteriori informazioni sull'interazione tra il runtime ASP.NET e IIS 6.0, vedere Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 5.0 e 6.0. Per ulteriori informazioni sull'integrazione di ASP.NET con IIS 7.0, vedere Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 7.0.

Di seguito sono elencate alcune delle attività illustrate nella procedura dettagliata:

  • Creazione di codice per una classe del gestore HTTP che implementa il metodo ProcessRequest e la proprietà IsReusable.

  • Registrazione del gestore nel file Web.config e mapping dell'estensione di file SAMPLE a tale gestore.

  • Mapping dell'estensione di file SAMPLE ad ASP.NET in Internet Information Services (IIS).

    Nota:

    Il server di sviluppo ASP.NET gestirà la richiesta per la risorsa una volta modificato il file di configurazione per includere un riferimento al nuovo gestore. Per ulteriori informazioni sul server di sviluppo ASP.NET, vedere Server Web in Visual Web Developer. Per consentire a IIS di gestire la richiesta, vedere quanto riportato più avanti in questa procedura dettagliata.

Prerequisiti

Per completare questa procedura dettagliata è necessario disporre dei seguenti elementi:

  • Visual Studio o Visual Web Developer.

  • Un sito Web ASP.NET eseguibile mediante IIS.

  • IIS 6.0 o IIS 7.0.

Creazione di una classe del gestore HTTP sincrono

Per creare la classe del gestore HTTP personalizzato HelloWorldHandler

  1. Se il sito Web utilizzato non possiede ancora una cartella App_Code, crearne una nella radice del sito.

  2. Nella directory App_Code, creare una classe denominata HelloWorldHandler, quindi aggiungere il codice seguente al file della classe.

    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; }
        }
    }
    

    Il codice consente di implementare il metodo ProcessRequest e scrivere una stringa nella proprietà Response dell'oggetto HttpContext corrente.

Registrazione del gestore HTTP personalizzato in IIS 6.0

Una volta creata la classe del gestore HTTP personalizzato, è necessario registrarla nel file Web.config dell'applicazione per consentire ad ASP.NET di individuare il gestore quando riceve le richieste per risorse il cui URL termina con l'estensione SAMPLE.

Le procedure per la registrazione del gestore possono essere diverse, a seconda che si utilizzi IIS 6.0 o IIS 7.0. In questa sezione viene descritto come registrare un gestore in IIS 6.0. Nella sezione successiva verrà descritto come registrare un gestore in IIS 7.0.

Per registrare il gestore in IIS 6.0

  1. Se il sito Web non possiede ancora un file Web.config, crearne uno nella radice del sito.

  2. Aggiungere l'elemento evidenziato di seguito al file Web.config:

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

    L'elemento di configurazione registra il gestore personalizzato in base al nome della classe ed esegue il mapping dell'estensione di file SAMPLE a tale gestore.

    Registrare il mapping di un'estensione dell'applicazione per l'estensione di file SAMPLE utilizzando Gestione IIS. Per ulteriori informazioni, vedere Procedura: configurare un'estensione del gestore HTTP in IIS.

Registrazione del gestore HTTP personalizzato in IIS 7.0

In IIS 7.0 un'applicazione può essere eseguita in modalità classica o integrata. In modalità classica le richieste vengono elaborate in modo molto simile a quanto avviene in IIS 6.0. In modalità integrata, IIS 7.0 gestisce le richieste utilizzando una pipeline che consente di condividere richieste, moduli e altre funzionalità con ASP.NET.

Nel caso di IIS 7.0, il gestore viene registrato nel file Web.config o in Gestione IIS. Poiché in IIS 7.0 l'amministrazione è centralizzata, le modifiche apportate al file Web.config di un'applicazione si riflettono nell'interfaccia di Gestione IIS per l'applicazione e viceversa. Nelle procedure che seguono i gestori vengono registrati nel file Web.config.

Le procedure per la registrazione del gestore per IIS 7.0 sono diverse, a seconda che si utilizzi la modalità classica o la modalità integrata. Seguire la procedura relativa alla modalità IIS utilizzata.

Per registrare il gestore in IIS 7.0 eseguito in modalità classica

  1. Se il sito Web non possiede ancora un file Web.config, crearne uno nella radice del sito.

  2. Aggiungere l'elemento evidenziato di seguito al file Web.config:

    Nota:

    Sostituire il percorso corretto del file aspnet_isapi.dll. Il file DLL si trova nella cartella in cui è installato .NET Framework. Per impostazione predefinita, la cartella è C:\WINDOWS\Microsoft.NET\Framework\versione.

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

    L'elemento di configurazione registra il gestore personalizzato in base al nome della classe ed esegue il mapping dell'estensione di file SAMPLE a tale gestore.

    Nota:

    Poiché si sta registrando un'estensione di file personalizzata, il gestore viene registrato sia nella sezione handlers sia nella sezione httpHandlers. In modalità classica, ai fini della compatibilità con le versioni precedenti, il gestore viene specificato come modulo ISAPI utilizzando l'attributo modules. Il percorso del file DLL ISAPI ASP.NET viene specificato mediante l'attributo scriptProcessor. L'attributo name è obbligatorio nella sezione handlers.

Per registrare il gestore in IIS 7.0 eseguito in modalità integrata

  1. Se il sito Web non possiede ancora un file Web.config, crearne uno nella radice del sito.

  2. Aggiungere l'elemento evidenziato di seguito al file Web.config:

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

    L'elemento di configurazione registra il gestore personalizzato in base al nome della classe ed esegue il mapping dell'estensione di file SAMPLE a tale gestore.

    Nota:

    La registrazione viene effettuata nella sezione handlers, non nella sezione httpHandlers. L'attributo name è obbligatorio.

Test del gestore HTTP personalizzato

Una volta creato e registrato il gestore HTTP personalizzato, è possibile eseguirne il test.

Per eseguire il test del gestore HTTP personalizzato

  1. Nel browser, richiedere una pagina dall'applicazione Web.

  2. Nel browser, immettere un URL che termina con .sample. Ad esempio, immettere l'URL seguente:

    https://localhost/SampleApplication/test.sample
    

    Viene visualizzato il testo definito nella classe HelloWorldHandler.

Vedere anche

Attività

Procedura: creare un gestore HTTP asincrono

Concetti

Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 5.0 e 6.0

Altre risorse

Ciclo di vita di ASP.NET