Freigeben über


Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers

Aktualisiert: November 2007

In dieser exemplarischen Vorgehensweise wird dargestellt, wie ein HTTP-Handler für die synchrone Verarbeitung von Anforderungen erstellt wird. Der Beispielhandler verarbeitet Anforderungen für Ressourcen in einer ASP.NET-Anwendung, deren URL mit .sample endet.

Wenn eine Ressource angefordert wird, deren URL auf .sample endet, leitet der Webserver die Anforderung an ASP.NET weiter. ASP.NET wiederum ruft den HTTP-Handler auf, der eine Antwort zurückgibt. Die Antwort wird dynamisch vom Handler erstellt. Eine Datei mit der Dateinamenerweiterung .sample ist nicht erforderlich.

Weitere Informationen zur Interaktion zwischen der ASP.NET-Laufzeit und IIS 6.0 finden Sie unter Übersicht über den Lebenszyklus von ASP.NET-Anwendungen für IIS 5.0 und 6.0. Weitere Informationen zur Integration von ASP.NET in IIS 7.0 finden Sie unter Übersicht über den Lebenszyklus von ASP.NET-Anwendungen für IIS 7.0.

In dieser exemplarischen Vorgehensweise werden u. a. die folgenden Aufgaben veranschaulicht:

  • Erstellen von Code für eine HTTP-Handlerklasse. Die Klasse muss die ProcessRequest-Methode und die IsReusable-Eigenschaft implementieren.

  • Registrieren des Handlers in der Datei Web.config und Zuordnen der Dateinamenerweiterung .sample.

  • Zuordnen der Dateinamenerweiterung .sample für ASP.NET in IIS (Internetinformationsdienste).

    Hinweis:

    ASP.NET Development Server verarbeitet die Anforderung für die neue Ressource nach dem Ändern der Konfigurationsdatei durch Hinzufügen eines Verweises auf den neuen Handler. Ausführliche Informationen zu ASP.NET Development Server finden Sie unter Webserver in Visual Web Developer. Wie IIS die Anforderung bearbeiten kann, wird im Verlauf dieser exemplarischen Vorgehensweise beschrieben.

Vorbereitungsmaßnahmen

Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Visual Studio oder Visual Web Developer.

  • Eine ASP.NET-Website, die mit IIS ausgeführt werden kann.

  • IIS 6.0 oder IIS 7.0.

Erstellen einer synchronen HTTP-Handlerklasse

So erstellen Sie die benutzerdefinierte HelloWorldHandler-HTTP-Handlerklasse

  1. Wenn für die Webseite, mit der Sie arbeiten, noch kein Ordner App_Code vorhanden ist, erstellen Sie einen solchen im Stammverzeichnis der Site.

  2. Erstellen Sie im Verzeichnis App_Code eine Klasse mit dem Namen HelloWorldHandler, und fügen Sie der Klassendatei folgenden Code hinzu.

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

    Dieser Code implementiert die ProcessRequest-Methode und schreibt eine Zeichenfolge in die Response-Eigenschaft des aktuellen HttpContext-Objekts.

Registrieren des benutzerdefinierten HTTP-Handlers in IIS 6.0

Nachdem Sie die benutzerdefinierte HTTP-Handlerklasse erstellt haben, müssen Sie sie in der Datei Web.config der Anwendung registrieren. Dadurch kann ASP.NET beim Empfangen von Anforderungen an Ressourcen, deren URL auf .sample endet, den Handler finden.

Für das Registrieren des Handlers gibt es unterschiedliche Methoden, je nachdem, ob Sie IIS 6.0 oder IIS 7.0 verwenden. In diesem Abschnitt wird beschrieben, wie ein Handler in IIS 6.0 registriert wird. Im nächsten Abschnitt wird beschrieben, wie ein Handler in IIS 7.0 registriert wird.

So registrieren Sie den Handler in IIS 6.0

  1. Wenn für die Website noch keine Web.config-Datei vorhanden ist, erstellen Sie diese im Stammverzeichnis der Website.

  2. Fügen Sie der Datei Web.config das folgende markierte Element hinzu.

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

    Das Konfigurationselement registriert den benutzerdefinierten Handler nach dem Klassennamen und ordnet diesem Handler die Dateinamenerweiterung .sample zu.

    Registrieren Sie mithilfe von IIS-Manager eine Zuordnung für Anwendungserweiterungen für die Dateinamenerweiterung .sample. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren einer HTTP-Handlererweiterung in IIS.

Registrieren des benutzerdefinierten HTTP-Handlers in IIS 7.0

In IIS 7.0 kann eine Anwendung im klassischen oder im integrierten Modus ausgeführt werden. Im klassischen Modus werden Anforderungen annähernd auf die gleiche Weise verarbeitet wie in IIS 6.0. Im integrierten Modus werden Anforderungen von IIS 7.0 mithilfe einer Pipeline verwaltet, sodass Anforderungen, Module und andere Features für ASP.NET freigegeben werden können.

In IIS 7.0 muss der Handler entweder in der Datei Web.config oder in IIS-Manager registriert werden. Da die Administration in IIS 7.0 zentralisiert wurde, werden Änderungen in der Datei Web.config einer Anwendung in der IIS-Manager-Schnittstelle der Anwendung reflektiert und umgekehrt. In den folgenden Verfahren werden die Handler in der Datei Web.config registriert.

Für IIS 7.0 im klassischen Modus und im integrierten Modus gibt es verschiedene Verfahren für die Registrierung des Handlers. Führen Sie das Verfahren für den von Ihnen verwendeten IIS-Modus aus.

So registrieren Sie den Handler in IIS 7.0 im klassischen Modus

  1. Wenn für die Website noch keine Web.config-Datei vorhanden ist, erstellen Sie diese im Stammverzeichnis der Website.

  2. Fügen Sie der Datei Web.config das folgende markierte Element hinzu.

    Hinweis:

    Ersetzen Sie den richtigen Pfad für die Datei aspnet_isapi.dll. Die DLL-Datei befindet sich in dem Ordner, in dem .NET Framework installiert ist. Standardmäßig ist dies C:\WINDOWS\Microsoft.NET\Framework\Version.

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

    Das Konfigurationselement registriert den benutzerdefinierten Handler nach dem Klassennamen und ordnet diesem Handler die Dateinamenerweiterung .sample zu.

    Hinweis:

    Registrieren Sie den Handler sowohl im Abschnitt handlers als auch im Abschnitt httpHandlers, da Sie eine benutzerdefinierte Dateinamenerweiterung registrieren. Im klassischen Modus ist der Handler mithilfe des modules-Attributs als ISAPI-Modul angegeben, um die Abwärtskompatibilität zu gewährleisten. Der Pfad der ASP.NET-ISAPI-DLL wird durch das scriptProcessor-Attribut angegeben. Das name-Attribut ist im handlers-Abschnitt erforderlich.

So registrieren Sie den Handler in IIS 7.0 im integrierten Modus

  1. Wenn für die Website noch keine Web.config-Datei vorhanden ist, erstellen Sie diese im Stammverzeichnis der Website.

  2. Fügen Sie der Datei Web.config das folgende markierte Element hinzu.

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

    Das Konfigurationselement registriert den benutzerdefinierten Handler nach dem Klassennamen und ordnet diesem Handler die Dateinamenerweiterung .sample zu.

    Hinweis:

    Die Registrierung wird im Abschnitt handlers durchgeführt, jedoch nicht im Abschnitt httpHandlers. Das name-Attribut ist erforderlich.

Testen des benutzerdefinierten HTTP-Handlers

Nach dem Erstellen und Registrieren des benutzerdefinierten HTTP-Moduls können Sie dieses testen.

So testen Sie den benutzerdefinierten HTTP-Handler

  1. Fordern Sie im Browser eine Seite aus der Webanwendung an.

  2. Geben Sie im Browser eine URL ein, die auf .sample endet. Geben Sie beispielsweise folgende URL ein:

    https://localhost/SampleApplication/test.sample
    

    Der in der HelloWorldHandler-Klasse definierte Text wird angezeigt.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines asynchronen HTTP-Handlers

Konzepte

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

Weitere Ressourcen

ASP.NET-Lebenszyklus