<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_isapi.xml.meta">
<name>mod_isapi</name>
<description>ISAPI-Erweiterungen für Windows</description>
<status>Base</status>
<sourcefile>mod_isapi.c</sourcefile>
<identifier>isapi_module</identifier>
<compatibility>Win32 only</compatibility>
<summary>
<p>Dieses Modul implementiert das Internet-Servererweiterungs-API.
Das bedeutet, dass die Internet-Servererweiterungen (die ISAPI-.dll-Module)
von Apache für Windows genutzt werden können.</p>
<p>ISAPI-Erweiterungsmodule (<code>.dll</code>-Dateien) werden
von ditter Seite entwickelt. Sie stammen nicht von der Apache Group
und werden von dieser nicht unterstützt. Bei Problemen mit
ISAPI-Erweiterungen
sollten Sie direkt Kontakt mit dem ISAPI-Entwickler aufnehmen.
<strong>Bitte <em>wenden Sie sich mit solchen Problemen nicht</em> an
das Apache-Serverprojekt.</strong></p>
</summary>
<section id="usage"><title>Verwendung</title>
<p>Verbinden Sie in der Server-Konfigurationsdatei
mit Hilfe der
<directive module="mod_mime">AddHandler</directive>-Direktive
die ISAPI-Dateien und ihre Dateinamenserweiterungen
mit dem <code>isapi-isa</code>-Handler. Damit <code>.dll</code>-Dateien
als ISAPI-Erweiterung verarbeitet werden, muss der Datei
<code>httpd.conf</code> folgende Zeile hinzugefügt werden:</p>
<example>
AddHandler isapi-isa .dll
</example>
<p>Beim Apache-Server gibt es keine Möglichkeit, ein angefordertes
Modul geladen zu lassen. Sie können ein bestimmtes Modul aber vorab
laden
und geladen lassen, wenn Sie folgende Anweisung in die
<code>httpd.conf</code>-Datei einfügen:</p>
<example>
ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
</example>
<p> Unabhängig davon, ob eine ISAPI-Erweiterung vorab geladen wurde,
gelten für alle ISAPI-Erweiterungen die gleichen Berechtigungen und
Einschränkungen wie für CGI-Skripte. Deshalb muß für
das Verzeichnis mit
den <code>.dll</code>-Dateien der ISAPI-Erweiterung
<directive module="core">Options</directive> <code>ExecCGI</code>
gesetzt werden.</p>
<p>In den Abschnitten <a href="#notes">Ergänzende Hinweise</a> und
<a href="#journal">Für den Programmierer</a> finden Sie weitere
Einzelheiten
und Erklärungen zur ISAPI-Unterstützung durch
<module>mod_isapi</module>.</p>
</section>
<section id="notes"><title>Ergänzende Hinweise</title>
<p>Die ISAPI-Implementierung des Apache stimmt mit Ausnahme einiger
"Microsoft-spezifischer" Erweiterungen für die asynchrone
Ein- und Ausgabe mit der ISAPI-Spezifikation 2.0
überein. Das Ein- und Ausgabemodell des Apache erlaubt das
asynchrone Lesen und Schreiben nicht in der Weise, wie es die
ISAPI-Spezifikation vorschreibt. Versucht eine ISA auf nicht
unterstützte Eigenschaften wie die asynchrone Ein- und Ausgabe
zuzugreifen, wird eine Meldung in das Fehlerprotokoll eingetragen, die die
Fehlersuche erleichtern soll. Da es sich dabei um sehr viele Meldungen
handeln
kann, lässt sich eine Flut von Meldungen mit der Option
<code>ISAPILogNotSupported Off</code> unterdrücken.</p>
<p>Einige Server, wie zum Beispiel der IIS von Microsoft, laden
die ISAPI-Erweiterung in den Server und behalten sie solange im
Arbeitsspeicher, bis der Speicherplatz knapp wird (falls keine anderen
Optionen angegeben wurden). Zur Zeit lädt und entlädt der Apache
die ISAPI-Erweiterung bei jeder Anforderung, es sei denn, die
<directive module="mod_isapi">ISAPICacheFile</directive>-Direktive
wird angegeben. Das ist zwar nicht effizient, für das Speichermodell
des
Apache ist dies jedoch das effektivste Verfahren. Viele ISAPI-Module
zeichnen sich durch geringfügige Abweichungen aus, die zur
Inkompatibilität
mit dem Apache-Server führen können, so dass das Entladen dieser
Module
die Stabilität des Servers verbessert.</p>
<p>Ferner ist zu beachten, dass der Apache zwar ISAPI-Erweiterungen
jedoch <strong>keine ISAPI-Filter</strong> unterstützt.
Dies kann zu einem späteren Zeitpunkt möglich sein, zur Zeit ist
es jedoch nicht
geplant.</p>
</section>
<section id="journal"><title>Für den Programmierer</title>
<p>Wenn Sie <module>mod_isapi</module>-Module für den Apache 2.0
programmieren, müssen Sie die Aufrufe von
<code>ServerSupportFunction</code> auf folgende Direktiven
beschränken:</p>
<dl>
<dt><code>HSE_REQ_SEND_URL_REDIRECT_RESP</code></dt>
<dd>Umleitung des Benutzers an eine andere Position.<br />
Es muss sich um eine vollständige URL handeln
(<code>http://Server/Position</code>).</dd>
<dt><code>HSE_REQ_SEND_URL</code></dt>
<dd>Umleitung des Benutzers an eine andere Position.<br />
Hier darf es sich nicht um eine vollständige URL handeln, Protokoll
oder Servername dürfen nicht angegeben werden, sondern nur
kurz <code>/Position</code>).<br />
Diese Umleitung wird vom Server und nicht vom Browser
vorgenommen.<br />
<note type="warning"><title>Achtung</title>
<p>In der aktuellen Dokumentation scheint Microsoft die Unterscheidung
zwischen diesen beiden <code>HSE_REQ_SEND_URL</code>-
Funktionen aufgegeben zu haben. Der Apache behandelt sie weiterhin
als zwei eigenständige Funktionen mit unterschiedlichen
Anforderungen
und unterschiedlichem Verhalten.</p>
</note></dd>
<dt><code>HSE_REQ_SEND_RESPONSE_HEADER</code></dt>
<dd>Der Apache akzeptiert den Rumpf einer Antwort nach dem Header,
wenn eine Leerzeile im String-Argument des Headers folgt (zwei aufeinander
folgende Zeilenumbrüche). <code>NULL</code> darf nicht im Rumpf
enthalten sein, weil damit das Argument beendet wird.</dd>
<dt><code>HSE_REQ_DONE_WITH_SESSION</code></dt>
<dd>Der Apache betrachtet dies als No-Option-Flag, da die Sitzung
beendet wird, wenn ISAPI von der Verarbeitung zurückkehrt.</dd>
<dt><code>HSE_REQ_MAP_URL_TO_PATH</code></dt>
<dd>Der Apache wandelt einen virtuellen Namen in einen realen
Namen um.</dd>
<dt><code>HSE_APPEND_LOG_PARAMETER</code></dt>
<dd>
Diese protokollierte Meldung kann wie folgt aufgezeichnet werden:
<ul>
<li>In der <code>\"%{isapi-parameter}n\"</code>-Komponente
einer <directive module="mod_log_config">CustomLog</directive>-
Anweisung</li>
<li>In der <code>%q</code>-Komponente mit der
<directive module="mod_isapi">ISAPIAppendLogToQuery</directive>
<code> On</code>-Direktive</li>
<li>Im Fehlerprotokoll mit der
<directive module="mod_isapi">ISAPIAppendLogToErrors
</directive> <code>On</code>-Direktive</li>
</ul>
<p>Die erste Option (<code>%{isapi-parameter}n</code>-Komponente)
steht immer zur Verfügung und ist vorzuziehen.</p>
</dd>
<dt><code>HSE_REQ_IS_KEEP_CONN</code></dt>
<dd>Gibt den ausgehandelten Keep-Alive-Status zurück.</dd>
<dt><code>HSE_REQ_SEND_RESPONSE_HEADER_EX</code></dt>
<dd>Verhält sich wie dokumentiert, wenngleich auch das
<code>fKeepConn</code>-Flag ignoriert wird.</dd>
<dt><code>HSE_REQ_IS_CONNECTED</code></dt>
<dd>Gibt <code>FALSE</code> zurück, wenn die Anfrage abgebrochen
wurde.</dd>
</dl>
<p>Bei unbekannten <code>ServerSupportFunction</code>-Aufrufen
gibt der Apache <code>FALSE</code> zurück und setzt
<code>GetLastError</code> auf
<code>ERROR_INVALID_PARAMETER</code>.</p>
<p><code>ReadClient</code> ermittelt den über den Anfangspuffer
hinausgehenden Anfragerumpf (definiert mit <directive module="mod_isapi"
>ISAPIReadAheadBuffer</directive>). Basierend auf der
<directive>ISAPIReadAheadBuffer</directive>-Einstellung (Anzahl der Bytes,
die vor dem Aufruf des ISAPI-Handlers gepuffert werden) werden
kürzere Anfragen beim Aufruf vollständig an die Erweiterung
gesendet.
Handlet es sich um eine längere Anfrage, muss die ISAPI-Erweiterung
mit <code>ReadClient</code> den verbleibenden Teil des Anfragerumpfs
lesen.</p>
<p><code>WriteClient</code> wird unterstützt, allerdings nur mit dem
<code>HSE_IO_SYNC</code>- oder dem No-Option-Flag (Wert
<code>0</code>). Alle übrigen <code>WriteClient</code>-Anfragen
werden mit dem Rückgabewert <code>FALSE</code> und dem Wert
<code>GetLastError</code> für
<code>ERROR_INVALID_PARAMETER</code> zurückgewiesen.</p>
<p><code>GetServerVariable</code> wird unterstützt, obwohl die
erweiterten Servervariablen (wie sie von anderen Servern definiert werden),
nicht vorhanden sind. Alle üblichen CGI-Umgebungsvariablen sowie die
<code>ALL_HTTP</code>- und <code>ALL_RAW</code>-Werte
stehen zur Verfügung.</p>
<p>Das Modul <module>mod_isapi</module> von Apache 2.0
unterstützt weitere Möglichkeiten, die mit späteren
Versionen der
ISAPI-Spezifikation eingeführt wurden, sowie eine eingeschränkte
Emulation
der asynchronen I/O und die <code>TransmitFile</code>-Semantik.
Außerdem
unterstützt der Apache das vorgezogene Laden von ISAPI-dlls zur
Verbesserung
der Serverleistung, was für die Version 1.3 des Moduls
<code>mod_isapi</code> nicht gilt.</p>
</section>
<directivesynopsis>
<name>ISAPICacheFile</name>
<description>ISAPI -dlls werden beim Start geladen</description>
<syntax>ISAPICacheFile <var>Dateipfad</var> [<var>Dateipfad</var>]
...</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Übernimmt eine durch Leerzeichen getrennte Liste mit den Namen
der Dateien, die beim Serverstart geladen werden und bis zum
Herunterfahren des Servers zur Verfügung stehen. Diese Direktive kann
für jede <code>.dll</code>-Datei wiederholt werden. Dabei sollte der
vollständige Pfad angegeben werden. Handelt es sich nicht um eine
absolute
Pfadangabe, wird der Pfad relativ zu
<directive module="core">ServerRoot</directive> interpretiert.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ISAPIReadAheadBuffer</name>
<description>Die Größe des Read-Ahead-Puffers, der an
ISAPI-Erweiterungen gesendet wird.</description>
<syntax>ISAPIReadAheadBuffer <var>Größe</var></syntax>
<default>ISAPIReadAheadBuffer 49152</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Legt die maximale Größe des Read-Ahead-Puffers fest, der an
ISAPI-Erweiterungen beim ersten Aufruf gesendet wird. Die restlichen
Daten müssen mit der <code>ReadClient</code>-Funktion abgefragt
werden. Einige ISAPI-Erweiterungen unterstützen die
<code>ReadClient</code>-Funktion möglicherweise nicht. Wenden
Sie sich bei Fragen an den Entwickler der ISAPI-Erweiterung.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ISAPILogNotSupported</name>
<description>Fehlermeldungen bei unbekannten ISAPI-Funktionen</description>
<syntax>ISAPILogNotSupported on|off</syntax>
<default>ISAPILogNotSupported off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Protokolliert alle unbekannten ISAPI-Aufrufe im Fehlerprotokoll des
Servers. Eine Aktivierung dieser Anweisung kann bei der Fehlersuche
hilfreich sein. Funktionieren alle ISAPI-Module, sollte sie wieder auf
<code>off</code> gesetzt werden.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ISAPIAppendLogToErrors</name>
<description>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-
Anforderungen von ISAPI-Erweiterungen im Fehlerprotokoll auf.</description>
<syntax>ISAPIAppendLogToErrors on|off</syntax>
<default>ISAPIAppendLogToErrors off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-
Anforderungen von ISAPI-Erweiterungen im Fehlerprotokoll des
Servers auf.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ISAPIAppendLogToQuery</name>
<description>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-Anforderungen von
ISAPI-Erweiterungen im Abfragefeld auf.</description>
<syntax>ISAPIAppendLogToQuery on|off</syntax>
<default>ISAPIAppendLogToQuery on</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-Anforderungen von
ISAPI-Erweiterungen im Abfragefeld auf. Die Aufzeichnungen
werden an die <directive module="mod_log_config">CustomLog
</directive> <code>%q</code>-Komponente angehängt.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ISAPIFakeAsync</name>
<description>Simulation einer asynchronen Unterstützung für
ISAPI-Callbacks</description>
<syntax>ISAPIFakeAsync on|off</syntax>
<default>ISAPIFakeAsync off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Wird die Anweisung auf <code>on</code> gesetzt, wird eine
asynchrone Unterstützung für ISAPI-Callbacks simuliert.</p>
</usage>
</directivesynopsis>
</modulesynopsis>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]