Gewusst wie: Registrieren von HTTP-Handlern

Aktualisiert: November 2007

Nachdem eine benutzerdefinierte HTTP-Handlerklasse erstellt wurde, muss sie in der Datei Web.config registriert werden. Auf diese Weise kann ASP.NET den HTTP-Handler aufrufen, um Anforderungen für Ressourcen zu erfüllen, welche die angegebene Dateinamenerweiterung aufweisen.

Die Art und Weise der Registrierung eines HTTP-Handlers hängt von der Version der Internetinformationsdienste (Internet Information Services, IIS) ab, die die Anwendung hostet. Bei IIS 6.0 registrieren Sie den Handler unter Verwendung des Abschnitts httpHandlers der Datei Web.config. Bei IIS 7.0 im klassischen Modus registrieren Sie den Handler im Abschnitt httpHandlers und ordnen den Handler der Datei Aspnet_isapi.dll zu. Bei IIS 7.0 im integrierten Modus registrieren Sie den Handler mithilfe des handlers-Elements im Abschnitt system.WebServer.

So registrieren Sie einen HTTP-Handler für IIS 6.0

  1. Kompilieren Sie die HTTP-Handlerklasse, und kopieren Sie die resultierende Assembly in den Ordner Bin im Stammordner der Anwendung.

    - oder -

    Legen Sie den Quellcode für den Handler im Ordner App_Code der Anwendung ab.

    Ein Beispiel für einen HTTP-Handler finden Sie unter Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers.

  2. Erstellen Sie in der Datei Web.config der Anwendung einen httpHandlers-Abschnitt.

    Im folgenden Beispiel wird veranschaulicht, wie ein HTTP-Handler registriert wird, der auf Anforderungen für die SampleHandler.new-Ressource reagiert. Der Handler wird in der Assembly SampleHandlerAssembly als Klasse SampleHandler definiert.

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

    Im folgenden Beispiel werden alle HTTP-Anforderungen für Dateien mit der Dateinamenerweiterung ".SampleFileExtension" der SampleHandler2-Klasse zugeordnet. In diesem Fall befindet sich der Handlercode im Ordner App_Code, sodass keine Assembly angegeben werden muss.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2 " />
        </httpHandlers>
      <system.web>
    </configuration>
    
  3. Konfigurieren Sie IIS so, dass die Anforderung für die benutzerdefinierte Dateinamenerweiterung an ASP.NET weitergeleitet wird.

    Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren einer HTTP-Handlererweiterung in IIS.

So registrieren Sie einen HTTP-Handler für IIS 7.0 im klassischen Modus

  1. Kompilieren Sie die HTTP-Handlerklasse, und kopieren Sie die resultierende Assembly in den Ordner Bin im Stammordner der Anwendung.

    - oder -

    Legen Sie den Quellcode für den Handler im Ordner App_Code der Anwendung ab.

    Ein Beispiel für einen HTTP-Handler finden Sie unter Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers.

  2. Erstellen Sie in der Datei Web.config der Anwendung einen httpHandlers-Abschnitt.

  3. Erstellen Sie einen system.webServer-Abschnitt innerhalb des configuration-Elements.

  4. Erstellen Sie ein handlers-Element innerhalb des Abschnitts system.WebServer.

    Hinweis:

    Sie müssen sowohl ein httpHandlers-Element als auch ein handlers-Element definieren.

    Im folgenden Beispiel wird veranschaulicht, wie ein HTTP-Handler registriert wird, der auf Anforderungen für die SampleHandler.new-Ressource reagiert. Der Handler wird in der Assembly SampleHandlerAssembly als Klasse SampleHandler definiert.

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

    Ersetzen Sie FrameworkPath durch den entsprechenden Pfad zur Datei Aspnet_isapi.dll.

    Im folgenden Beispiel werden alle HTTP-Anforderungen für Dateien mit der Dateinamenerweiterung ".SampleFileExtension" der SampleHandler2-Klasse zugeordnet. In diesem Fall befindet sich der Handlercode im Ordner App_Code, sodass keine Assembly angegeben werden muss.

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

    Ersetzen Sie FrameworkPath durch den entsprechenden Pfad zur Datei Aspnet_isapi.dll.

    Hinweis:

    Bei IIS 7.0 im klassischen Modus ist es im Gegensatz zu IIS 6.0 nicht erforderlich, die Dateinamenerweiterung mithilfe von IIS-Manager der Datei Aspnet_isapi.dll eigens zuzuordnen. Sie können die Erweiterung in der Datei Web.config zuordnen.

So registrieren Sie einen HTTP-Handler für IIS 7.0 im integrierten Modus

  1. Kompilieren Sie die HTTP-Handlerklasse, und kopieren Sie die resultierende Assembly in den Ordner Bin im Stammordner der Anwendung.

    - oder -

    Legen Sie den Quellcode für den Handler im Ordner App_Code der Anwendung ab.

    Ein Beispiel für einen HTTP-Handler finden Sie unter Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers.

  2. Erstellen Sie in der Datei Web.config der Anwendung ein handlers-Element im Abschnitt system.webServer.

    Hinweis:

    Handler, die im httpHandlers-Element definiert sind, werden nicht verwendet. Wenn Sie die httpHandlers-Registrierungen nicht entfernen, müssen Sie das validateIntegratedModeConfiguration-Attribut des validation-Elements auf false festlegen, um Fehler zu vermeiden. Das validation-Element ist ein untergeordnetes Element des system.webServer-Elements. Weitere Informationen finden Sie unter "Disabling the migration error message" in ASP.NET Integration with IIS 7.0.

    Im folgenden Beispiel wird veranschaulicht, wie ein HTTP-Handler registriert wird, der auf Anforderungen für die SampleHandler.new-Ressource reagiert. Der Handler wird in der Assembly SampleHandlerAssembly als Klasse SampleHandler definiert.

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

    Das resourceType-Attribut führt die gleiche Funktion aus wie die Option Überprüfen, ob Datei vorhanden ist in IIS-Manager für IIS 6.0.

    Das folgende Beispiel zeigt, wie alle HTTP-Anforderungen für Dateien mit der Dateinamenerweiterung ".SampleFileExtension" der SampleHandler2-HTTP-Handlerklasse zugeordnet werden. In diesem Fall befindet sich der Handlercode im Ordner App_Code, sodass keine Assembly angegeben werden muss.

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

    Bei IIS 7.0 im integrierten Modus ist lediglich die Registrierung im handlers-Element erforderlich.

    Weitere Informationen über das web.webServer-IIS-Konfigurationselement finden Sie unter system.webServer Section Group (IIS Settings Schema) auf der MSDN-Website.

    Weitere Informationen zum Konfigurieren eines Handlers für eine benutzerdefinierte Dateinamenerweiterung finden Sie unter Gewusst wie: Konfigurieren einer HTTP-Handlererweiterung in IIS.

Siehe auch

Aufgaben

Gewusst wie: Konfigurieren einer HTTP-Handlererweiterung in IIS

Gewusst wie: Erstellen eines asynchronen HTTP-Handlers

Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers

Konzepte

Übersicht über den Lebenszyklus von ASP.NET-Anwendungen für IIS 5.0 und 6.0

Übersicht über den Lebenszyklus von ASP.NET-Anwendungen für IIS 7.0