INFO: ASP.NET-HTTP-Module und -HTTP-Handler

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307985 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D307985
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
307985 INFO: ASP.NET HTTP Modules and HTTP Handlers Overview
Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
http://support.microsoft.com/
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel enthält eine Einführung in die ASP.NET-HTTP-Module und -HTTP-Handler.

Weitere ASP.NET-Überblicksinformationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
305140 INFO: ASP.NET Roadmap

Weitere Informationen

HTTP-Module und HTTP-Handler sind Bestandteil der ASP.NET-Architektur. Jede Anforderung wird von mehreren HTTP-Modulen verarbeitet (z.B. vom Authentifizierungsmodul und vom Sitzungsmodul) und wird dann von einem einzigen HTTP-Handler verarbeitet. Nachdem der Handler die Anforderung verarbeitet hat, fließt sie zurück durch die HTTP-Module.

Dieser Artikel ist in die folgenden Abschnitte unterteilt:

HTTP-Module

Module werden vor und nach der Ausführung des Handlers aufgerufen. Entwickler können Module verwenden, um jede einzelne Anforderung abzufangen, an ihr teilzunehmen oder sie zu ändern. Module implementieren die Schnittstelle IHttpModule, die im Namespace System.Web liegt.

Verfügbare Ereignisse

Eine Klasse HttpApplication liefert mehrere Ereignisse, mit denen Module sich synchronisieren können. Die folgenden Ereignisse stehen für Module zur Synchronisation bei jeder Anforderung zur Verfügung. Die Ereignisse werden sequenziell aufgelistet:
  • BeginRequest: Die Anforderung wurde gestartet. Wenn Sie zu Beginn einer Anforderung irgendetwas tun müssen (z.B. Werbebanner oben auf der Seite anzeigen), synchronisieren Sie dieses Ereignis.
  • AuthenticateRequest: Wenn Sie ein eigenes Authentifizierungsschema einbinden möchten (z.B. Suche nach einem Benutzer in einer Datenbank, um die Gültigkeit des Kennworts zu prüfen), erstellen Sie ein Modul, das dieses Ereignis synchronisiert und den Benutzer Ihren Anforderungen gemäß authentifiziert.
  • AuthorizeRequest: Dieses Ereignis wird intern verwendet, um Berechtigungsmechanismen zu implementieren (z.B. zur Speicherung Ihrer Zugriffssteuerungslisten in einer Datenbank anstelle des Dateisystems). Sie können dieses Ereignis zwar außer Kraft setzen, es gibt jedoch nur wenige gute Gründe dafür.
  • ResolveRequestCache: Dieses Ereignis ermittelt, ob eine Seite aus dem Ausgabecache bedient werden kann. Wenn Sie ein eigenes Caching-Modul schreiben möchten (weil Sie z.B. einen dateibasierten Cache anstelle eines Speicher-Cache erstellen möchten), synchronisieren Sie dieses Ereignis, um zu ermitteln, ob die Seite aus dem Cache bedient werden soll.
  • AcquireRequestState: Der Sitzungsstatus wird aus dem Statusspeicher abgerufen. Wenn Sie ein eigenes Statusverwaltungsmodul erstellen möchten, synchronisieren Sie dieses Ereignis, um den Sitzungsstatus aus Ihrem Statusspeicher abzufragen.
  • PreRequestHandlerExecute: Dieses Ereignis tritt vor Ausführung des HTTP-Handlers ein.
  • PostRequestHandlerExecute: Dieses Ereignis tritt nach der Ausführung des HTTP-Handlers ein.
  • ReleaseRequestState: Der Sitzungsstatus wird im Statusspeicher gespeichert. Wenn Sie ein eigenes Sitzungsstatusmodul erstellen, müssen Sie Ihren Status in Ihrem Statusspeicher ablegen.
  • UpdateRequestCache: Dieses Ereignis schreibt Ausgabedaten zurück in den Ausgabecache. Wenn Sie ein eigenes Cachemodul erstellen, schreiben Sie die Ausgabedaten zurück in Ihren Cache.
  • EndRequest: Die Anforderung wurde abgeschlossen. Eventuell möchten Sie ein Debugging-Modul erstellen, das über die gesamte Anforderung hinweg Informationen sammelt und auf die Seite schreibt.
Die folgenden Ereignisse stehen für Module zur Synchronisation bei jeder Übertragung einer Anforderung zur Verfügung. Die Reihenfolge dieser Ereignisse ist nicht deterministisch.
  • PreSendRequestHeaders: Dieses Ereignis tritt vor dem Senden der Header ein. Wenn Sie weitere Header hinzufügen möchten, können Sie dieses Ereignis aus einem benutzerdefinierten Modul synchronisieren.
  • PreSendRequestContent: Dieses Ereignis tritt ein, wenn die Methode Response.Flush aufgerufen wird. Wenn Sie weitere Inhalte hinzufügen möchten, können Sie dieses Ereignis aus einem benutzerdefinierten Modul synchronisieren.
  • Error: Dieses Ereignis tritt ein, wenn eine unbehandelte Ausnahme auftritt. Wenn Sie ein eigenes Fehlerbehandlungsmodul schreiben möchten, synchronisieren Sie dieses Ereignis.

Konfigurieren von HTTP-Modulen

Der Konfigurationsabschnittshandler <httpModules> ist für die Konfiguration der HTTP-Module in einer Anwendung zuständig. Er kann auf Computer-, Site- oder Anwendungsebene deklariert werden. Verwenden Sie folgende Syntax für den Abschnittshandler <httpModules>:
<httpModules>
   <add type="[COM+ Class], [Assembly]" name="[ModuleName]" />
   <remove type="[COM+ Class], [Assembly]" name="[ModuleName]" />
   <clear />
</httpModules>

HTTP-Module erstellen

Sie müssen die Schnittstelle IHttpModule implementieren, um ein HTTP-Modul zu erstellen. Die Schnittstelle IHttpModule hat zwei Methoden mit folgenden Signaturen:
void Init(HttpApplication);
void Dispose();
Weitere Informationen zum Erstellen von HTTP-Modulen finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
308000 HOW TO: Create an ASP.NET HTTP Module Using Visual Basic .NET
307996 HOW TO: Create an ASP.NET HTTP Module Using Visual C# .NET

HTTP-Handler

Handlers werden zur Verarbeitung einzelner Endpunktanforderungen verwendet. Handler ermöglichen es dem ASP.NET Framework, einzelne HTTP-URLs oder Gruppen von URL-Erweiterungen in einer Anwendung zu verarbeiten. Anders als bei Modulen wird nur ein Handler zur Verarbeitung einer Anforderung verwendet. Alle Handler implementieren die Schnittstelle IHttpHandler, die im Namespace System.Web liegt. Handler entsprechen in etwa den ISAPI-Erweiterungen (ISAPI = Internet Server Application Programming Interface).

Konfigurieren von HTTP-Handlern

Der Konfigurationsabschnittshandler <httpHandlers> ist dafür zuständig, eingehende URLs der Klasse IHttpHandler oder IHttpHandlerFactory zuzuordnen. Er kann auf Computer-, Site- oder Anwendungsebene deklariert werden. Unterverzeichnisse erben diese Einstellungen.

Administratoren verwenden die Tag-Direktive <add>, um den Abschnitt <httpHandlers> zu konfigurieren. <Add>-Direktiven werden von oben nach unten sequenziell interpretiert und verarbeitet. Verwenden Sie folgende Syntax für den Abschnittshandler <httpHandler>:
<httpHandlers>
   <add verb="[verb list]" path="[path/wildcard]" type="[COM+ Class], [Assembly]" validate="[true/false]" />
   <remove verb="[verb list]" path="[path/wildcard]" />
   <clear />
</httpHandlers>

HTTP-Handler erstellen

Sie müssen die Schnittstelle IHttpHandler implementieren, um einen HTTP-Handler zu erstellen. Die Schnittstelle IHttpHandler hat eine Methode und eine Eigenschaft mit folgenden Signaturen:
void ProcessRequest(HttpContext);
bool IsReusable {get;}
Weitere Informationen zum Erstellen von HTTP-Handlern finden Sie in folgendem Artikel der Microsoft Knowledge Base:
308001 HOW TO: Create an ASP.NET HTTP Handler Using Visual C# .NET
Weitere Informationen finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
307997 HOW TO: Create an ASP.NET HTTP Handler Using Visual Basic .NET


Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Eigenschaften

Artikel-ID: 307985 - Geändert am: Dienstag, 11. März 2003 - Version: 1.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP .NET (Bestandteil des .NET Framework)
Keywords: 
kbarttyperoadmap kbaspnet kbgrpdsasp kbhttpruntime kbinfo KB307985
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com