Condividi tramite


Procedura: registrare gestori HTTP

Aggiornamento: novembre 2007

Una volta creata la classe di un gestore HTTP personalizzato, è necessario registrarla nel file Web.config per consentire ad ASP.NET di chiamare il gestore HTTP per l'elaborazione delle richieste relative alle risorse con le estensioni del nome file specificate.

Il modo in cui viene registrato un gestore HTTP dipende dalla versione di Internet Information Services (IIS) che ospita l'applicazione. Per IIS 6.0 registrare il gestore utilizzando la sezione httpHandlers del file Web.config. Per IIS 7.0 in esecuzione in modalità classica registrare il gestore nella sezione httpHandlers ed eseguire il mapping del gestore al file Aspnet_isapi.dll. Per IIS 7.0 in esecuzione in modalità integrata registrare il gestore utilizzando l'elemento handlers nella sezione system.WebServer.

Per registrare un gestore HTTP per IIS 6.0

  1. Compilare la classe del gestore HTTP e copiare l'assembly risultante nella cartella bin sotto la cartella radice dell'applicazione.

    -oppure-

    Inserire il codice origine del gestore nella cartella App_Code dell'applicazione.

    Per un esempio di gestore HTTP, vedere Procedura dettagliata: creazione di un gestore HTTP sincrono.

  2. Nel file Web.config dell'applicazione creare una sezione httpHandlers.

    Nell'esempio seguente viene illustrato come registrare un gestore HTTP che risponda alle richieste per la risorsa SampleHandler.new. Il gestore viene definito come classe SampleHandler nell'assembly SampleHandlerAssembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
    </configuration>
    

    Nell'esempio seguente viene eseguito il mapping di tutte le richieste HTTP per i file con estensione SampleFileExtension alla classe SampleHandler2. In questo esempio il codice del gestore si trova nella directory App_Code, quindi non è necessario specificare un assembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2 " />
        </httpHandlers>
      <system.web>
    </configuration>
    
  3. Configurare IIS per inoltrare la richiesta per l'estensione del nome file personalizzata a ASP.NET.

    Per ulteriori informazioni, vedere Procedura: configurare un'estensione del gestore HTTP in IIS.

Per registrare un gestore HTTP per IIS 7.0 in esecuzione in modalità classica

  1. Compilare la classe del gestore HTTP e copiare l'assembly risultante nella cartella bin sotto la cartella radice dell'applicazione.

    -oppure-

    Inserire il codice origine del gestore nella cartella App_Code dell'applicazione.

    Per un esempio di gestore HTTP, vedere Procedura dettagliata: creazione di un gestore HTTP sincrono.

  2. Nel file Web.config dell'applicazione creare una sezione httpHandlers.

  3. Creare una sezione system.webServer all'interno dell'elemento di configurazione.

  4. Creare un elemento handlers all'interno della sezione system.WebServer.

    Nota:

    È necessario definire un elemento httpHandlers e un elemento handlers.

    Nell'esempio seguente viene illustrato come registrare un gestore HTTP che risponda alle richieste per la risorsa SampleHandler.new. Il gestore viene definito come classe SampleHandler nell'assembly SampleHandlerAssembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler" verb="*" path="SampleHandler.new" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    Sostituire FrameworkPath con il percorso corretto del file Aspnet_isapi.dll.

    Nell'esempio seguente viene eseguito il mapping di tutte le richieste HTTP per i file con estensione SampleFileExtension alla classe SampleHandler2. In questo esempio il codice del gestore si trova nella directory App_Code, quindi non è necessario specificare un assembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler2" verb="*" path="*.SampleFileExtension" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    Sostituire FrameworkPath con il percorso corretto del file Aspnet_isapi.dll.

    Nota:

    Per IIS 7.0 in esecuzione in modalità classica non è necessario utilizzare Gestione IIS separatamente per eseguire il mapping dell'estensione del nome file al file Aspnet_isapi.dll, come per IIS 6.0. È possibile eseguire il mapping dell'estensione nel file Web.config.

Per registrare un gestore HTTP per IIS 7.0 in esecuzione in modalità integrata

  1. Compilare la classe del gestore HTTP e copiare l'assembly risultante nella cartella bin sotto la cartella radice dell'applicazione.

    -oppure-

    Inserire il codice origine del gestore nella cartella App_Code dell'applicazione.

    Per un esempio di gestore HTTP, vedere Procedura dettagliata: creazione di un gestore HTTP sincrono.

  2. Nel file Web.config dell'applicazione creare un elemento handlers nella sezione system.webServer.

    Nota:

    I gestori definiti nell'elemento httpHandlers non vengono utilizzati. Se non si rimuovono le registrazioni in httpHandlers, è necessario impostare l'attributo validateIntegratedModeConfiguration dell'elemento validation su false per evitare errori. L'elemento validation è un elemento figlio di system.webServer. Per ulteriori informazioni, vedere "Disabling the migration error message" in ASP.NET Integration with IIS 7.0 (informazioni in lingua inglese).

    Nell'esempio seguente viene illustrato come registrare un gestore HTTP che risponda alle richieste per la risorsa SampleHandler.new. Il gestore viene definito come classe SampleHandler nell'assembly SampleHandlerAssembly.

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler" verb="*" 
            path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" 
            resourceType="Unspecified" />
        </handlers>
      <system.webServer>
    </configuration>
    
    Nota:

    L'attributo resourceType esegue la stessa funzione dell'opzione Verifica esistenza file in Gestione IIS per IIS 6.0.

    Nell'esempio seguente viene illustrato come eseguire il mapping di tutte le richieste HTTP per i file con estensione SampleFileExtension alla classe del gestore HTTP SampleHandler2. In questo esempio il codice del gestore si trova nella directory App_Code, quindi non è necessario specificare un assembly.

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler2" verb="*"
            path="*.SampleFileExtension" 
            type="SampleHandler2" />
            resourceType="Unspecified" />
        <handlers>
      <system.webServer>
    </configuration>
    

    Per IIS 7.0 in esecuzione in modalità integrata è necessaria solo la registrazione nell'elemento handlers.

    Per ulteriori informazioni sull'elemento di configurazione web.webServer IIS, vedere system.webServer Section Group (IIS Settings Schema) sul sito Web MSDN (informazioni in lingua inglese).

    Per ulteriori informazioni sulla configurazione di un gestore per un'estensione del nome file personalizzata, vedere Procedura: configurare un'estensione del gestore HTTP in IIS.

Vedere anche

Attività

Procedura: configurare un'estensione del gestore HTTP in IIS

Procedura: creare un gestore HTTP asincrono

Procedura dettagliata: creazione di un gestore HTTP sincrono

Concetti

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

Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 7.0