Die Suchfunktion gestattet die Verwendung beliebiger Boole'scher Ausdrücke (UND, ODER, NICHT) im Suchausdruck und die Gruppierung mit Klammern. Zum Beispiel:
Vielen Dank für Ihre Mithilfe. Wir bedauern, falls Ihnen Unannehmlichkeiten entstanden sind. Listing 9.1: Beispiel für eine benutzerdefinierte Fehlermeldung
Kapitel 9 • Benutzerdefinierte Fehlermeldungen
237
Dieser Code generiert eine HTML-Seite, die schlicht und einfach die Fehlermeldung 404: Nicht gefunden ersetzt. Sie können natürlich jeden beliebigen Text einsetzen; vergessen Sie nicht, die E-Mail-Adresse anzupassen. Um den Code zu testen, kopieren Sie die neue Datei in das Verzeichnis, in dem die anderen Fehlermeldungen abgelegt sind. Dann weisen Sie die neue Datei im Dialogfeld BENUTZERDEFINIERTE FEHLERMELDUNGEN der Fehlermeldung 404 zu. Wenn Sie nun im Browser eine auf Ihrer Website nicht vorhandene Seite aufrufen, sollte Ihre neue Fehlermeldung angezeigt werden. Sie sind hierbei aber nicht auf statische HTML-Seiten beschränkt, sondern können auch ASP- oder ISAPI-Anwendungen benutzen, um komplexere Antworten an den Client zu übermitteln. Listing 9.2 zeigt eine ASP-Seite, die etwas anspruchsvoller ist. <%@ LANGUAGE=VBScript %>
Bitte entschuldigen Sie, dass die von Ihnen aufgerufene Seite <% =strQueryString %> auf dem Server nicht gefunden wurde. Bitte überprüfen Sie die Schreibweise der in die Adresszeile eingegebenen URL auf Fehler. Aufgrund des Fehlers wurde eine E-Mail an unseren Webmaster gesendet. Probieren Sie es doch auf unserer Startseite .
Listing 9.2: Benutzerdefinierte Fehlermeldung, die eine E-Mail generiert [parameter]
Die Befehle sind die folgenden: •
GET pfad. Zeigt den gewählten Parameter an.
•
SET pfad wert. Weist einen neuen Wert zu.
•
ENUM pfad[/P, /A]. Zählt alle Parameter des Pfads auf. Der Schalter /P listet die Pfade ohne Daten auf, der Schalter /A zeigt alle Daten an, die am Knoten
gesetzt werden können. •
ENUM_ALL [/P, /A]. Listet alle Parameter auf. Die Schalter /P und /A funktionieren analog zum Befehl ENUM.
•
DELETE pfad. Löscht den Pfad oder Parameter.
•
CREATE pfad [schluesseltyp]. Erstellt einen neuen Pfad und weist ihm den Wert schluesseltyp zu.
•
APPCREATEINPROC pfad. Erstellt eine In-Process-Anwendung.
•
APPCREATEOUTPROC pfad. Erstellt eine Out-of-Process-Anwendung.
300
Arbeiten mit den IIS-Administrationsskripts
•
APPDELETE pfad. Löscht eine vorhandene Anwendung.
•
APPUNLOAD pfad. Entlädt die bezeichnete Out-of-Process-Anwendung.
•
APPGETSTATUS pfad. Holt den Status der Anwendung.
•
FIND pfad. Sucht den Pfad, von dem aus eine Anwendung gestartet wird.
•
START_SERVER pfad. Startet den Server, falls dies noch nicht geschehen ist.
•
STOP_SERVER pfad. Stoppt einen laufenden Server.
•
PAUSE_SERVER pfad. Hält die Website an.
•
CONTINUE_SERVER pfad. Startet eine angehaltene Website wieder.
•
HELP. Zeigt eine Liste aller Befehle von adsutil.
Beispiel Ich habe den folgenden Befehl an meinen Server eingeben: adsutil STOP_SERVER W3SVC/1
Abbildung 13.3 zeigt das Eingabeaufforderungsfenster, welches eine Bestätigung enthält, dass der Server angehalten wurde.
Abb. 13.3: Das Eingabeaufforderungsfenster mit eingegebenem Befehl adsutil und der Antwort des Servers
Hinweis Diese Befehle halten natürlich nicht den Windows 2000-Server an, sondern nur den IIS-Bereich des Servers.
Kapitel 13 • Administrationsskripts
301
13.1.2 dispnode -Verwaltungsknoten anzeigen Dieser Befehl wird zur Anzeige der Felder eines Verwaltungsknotens in der Baumstruktur verwendet. Ein Beispiel sehen Sie in Abbildung 13.4. Syntax dispnode -a ADSPfad, -h ADSPfad ist der vollständige Pfad zum anzuzeigenden Knoten. -h zeigt die Hilfe für den Befehl an.
Abb. 13.4: Beispiel für den Befehl dispnode -a
13.1.3 disptree – Verwaltungsbaumstruktur anzeigen Dieser Befehl wird zur Anzeige einer Baumstruktur der Verwaltungsobjekte verwendet. Die Anzeige beginnt im gewählten Basisverzeichnis; wurde kein Basisverzeichnis spezifiziert, dann ist IIS://localhost das Standardbasisverzeichnis. Syntax disptree -a basisverzeichnis, -n, -? -a basisverzeichnis ist der vollständige ADSI-Pfad zum Basisverzeichnis. -n sorgt dafür, dass der Befehl in Containerobjekten nicht rekursiv arbeitet. -? zeigt die Hilfe für den Befehl an.
Beispiel disptree -a IIS://Localhost/w3svc -n
302
Arbeiten mit den IIS-Administrationsskripts
13.1.4 findweb – Website suchen Dieser Befehl sucht die angegebene Website auf dem angegebenen Computer. Syntax findweb [-c computer] WEBSITE, -? -c computer gibt den zu suchenden Computer an. Wenn kein Computer angege-
ben wird, wird localhost verwendet. WEBSITE ist die zu suchende Website. Sie können hier wahlweise die Servernum-
mer, den Servernamen, den Domänennamen des Servers oder seine IP-Adresse eingeben. -? zeigt die Hilfe für den Befehl an.
Beispiel findweb -c computer2 www.gkcomput.com
13.1.5 mkw3site – Website erstellen Mit diesem Befehl erstellen Sie auf dem Server eine Website. Dabei werden natürlich keine Inhalte generiert, sondern es wird lediglich eine Sitestruktur erzeugt. Syntax mkw3site -r basisverzeichnis, -t serveranmerkung, -c computer, -o anschlussnummer, -i IPAdresse, -a Administrator, -h Hostname, --DontStart, -? Hilfe -r gibt den vollständigen Namen des Basisverzeichnisses an. -t ermöglicht Ihnen die Eingabe einer Anmerkung, die im Internetdienste-Mana-
ger angezeigt wird. -c ist der Name des Computers, auf dem die Site erstellt wird. Die Angabe ist
optional; wird sie nicht vorgenommen, dann wird als Computer localhost verwendet. -o bezeichnet die Anschlussnummer, die die Website auf HTTP-Anforderungen
überwachen soll. -i ist die IP-Adresse des Servers, dem die Site zugewiesen wird. Die Eingabe ist
ebenfalls optional. -a gibt einen Administrator an, der für die Verwaltung der Site verantwortlich ist. -h bezeichnet den für die Site zu verwendenden Hostnamen. Verwenden Sie diese
Option nur, wenn Sie DNS zur Namensauflösung verwenden.
Kapitel 13 • Administrationsskripts
303
--DontStart teilt IIS mit, dass der Server nach der Erstellung nicht gestartet wer-
den soll. Die eine oder andere Änderung kann noch notwendig sein, bevor Sie die Site online bringen. -? zeigt die Hilfe für den Befehl an.
Beispiel mkw3site -r F:\InetPub\wwwroot\testweb -t TestSite -h www.newweb.com
Abbildung 13.5 zeigt das Ergebnis dieses Befehls in Form einer in der MMC hinzugefügten Website.
Abb. 13.5: Die MMC-Konsole zeigt die neue Website, die mit Hilfe des Befehls mkw3site hinzugefügt wurde
Eines der besten Anwendungsgebiete für dieses Skript ist die gleichzeitige Erstellung mehrerer Websitestrukturen auf einem Server. Wenn Sie beispielsweise Administrator bei einem Internet- oder Webspaceprovider sind, bei dem mehrere Websites auf einem Server liegen, dann können Sie durch Verwendung dieses Befehls in einer Stapelverarbeitungsdatei schnell Sitestrukturen erstellen.
13.1.6 mkwebdir – virtuelles Webverzeichnis erstellen Wir haben bereits in früheren Kapiteln über virtuelle Verzeichnisse und darüber gesprochen, wie diese sich im Internetdienste-Manager erstellen lassen; virtuelle Verzeichnisse lassen sich aber auch mit Hilfe des Skriptbefehls mkwebdir einrichten. Wenn Sie den Befehl in einer Stapelverarbeitungsdatei verwenden, können Sie schnell und unkompliziert mehrere virtuelle Verzeichnisse gleichzeitig erstellen.
304
Arbeiten mit den IIS-Administrationsskripts
Syntax mkwebdir -c computername, -w website, -v name, pfad, -? Hilfe -c gibt den Namen des Computers an, auf dem das virtuelle Verzeichnis erstellt
wird. Sie können mehrere Rechner angeben, deren Namen durch Kommata getrennt werden. Wenn Sie keinen Computer angeben, wird wie üblich localhost als Standard verwendet. -w bezeichnet die Website, in der das virtuelle Verzeichnis angelegt wird. Die Site
wird durch die Nummer oder die Beschreibung des Servers, den Hostnamen oder die IP-Adresse spezifiziert. -v sind Name und Pfad des zu erzeugenden virtuellen Verzeichnisses. Sie können
auch hier mehrere durch Kommata getrennte Einträge angeben. -? zeigt die Hilfe für den Befehl an.
Beispiel mkwebdir -c -w "Website für die Marketingabteilung" -v grafiken, F:\Inetpub\wwwroot\Marketing\Grafiken
13.1.7 stopweb – Webserver beenden Dieser Befehl wird zum Beenden eines laufenden Webservers benutzt. Er stellt eine Alternative zur Verwendung des Internetdienste-Managers dar. Syntax stopweb -a server, -c computer, -v, -? Hilfe -a zeigt die Nummer des zu beendenden Servers als SERVERx an. Sie können meh-
rere Server, deren Einträge durch Kommata getrennt werden müssen, gleichzeitig beenden. -c bezeichnet den Computer. Auch hier können mehrere kommagetrennte Ein-
träge angegeben werden. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel stopweb -a 1
Abbildung 13.6 zeigt den Internetdienste-Manager, in dem die Standardwebsite infolge dieses stopweb-Befehls mit dem Vermerk (Beendet) versehen wurde, denn auf meinem Server ist die Standardwebsite als Website 1 klassifiziert.
Kapitel 13 • Administrationsskripts
305
Abb. 13.6: Der Internetdienste-Manager zeigt die infolge eines stopweb-Befehls beendete Standardwebsite
13.1.8 stopsrv – Server beenden Sie können diesen Befehl zum Beenden eines oder mehrerer Server verwenden. Trennen Sie wie üblich einzelne Einträge der Serverliste gegebenenfalls mit Kommata. Syntax stopsrv -a SERVERx, -c computer, -v, -? Hilfe -a bezeichnet die Nummer des zu beendenden Servers. -c bezeichnet den Computer. Auch hier können mehrere kommagetrennte Ein-
träge angegeben werden. Wird kein Name angegeben, so wird wie üblich localhost als Standard verwendet. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel stopsrv -a w3svc/1
Dieser Befehl würde den Webdienst auf dem Computer localhost beenden.
306
Arbeiten mit den IIS-Administrationsskripts
13.1.9 stopftp – FTP-Server beenden Verwenden Sie diesen Befehl zum Beenden des angegebenen FTP-Servers. Syntax stopftp -a SERVERx, -c computer, -v, -? Hilfe -a listet die Nummern des oder der zu beendenden Server auf. -c bezeichnet den oder die betroffenen Computer. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel stopftp -a 1
Dieser Befehl beendet den ersten FTP-Server, der auf Ihrem Computer vorhanden ist.
13.1.10 startweb – Webserver starten Die Möglichkeit, einen Webserver über die Befehlszeileneingabe zu beenden, würde sich als wenig hilfreich erweisen, wenn der Server sich via Befehlszeile nicht auch wieder starten ließe. Zu diesem Zweck bietet IIS den Befehl startweb an. Syntax startweb -a SERVERx, -c computer, -v, -? Hilfe -a verweist auf den oder die zu startendenden Server. Sie können mehrere Server,
deren Einträge durch Kommata getrennt werden müssen, gleichzeitig starten. -c bezeichnet den Computer, auf dem der Webdienst gestartet werden soll. Auch
hier können mehrere kommagetrennte Einträge angegeben werden. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel startweb -a 1
Mit diesem Befehl starten Sie den Webserver neu, den Sie weiter oben mit dem Befehl stopweb beendet haben.
Kapitel 13 • Administrationsskripts
307
13.1.11 startsrv – Server starten Mit diesem Befehl können Sie einen oder mehrere Server via Befehlszeile starten. Syntax startsrv -a SERVERx, -c computer, -v, -? Hilfe -a gibt den oder die Servernummern an. Achten Sie gegebenenfalls auf die Kom-
matrennung. -c bezeichnet den oder die zu startenden Computer. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel startsrv -c computer -a w3svc/1
Dadurch wird der Webdienst auf dem Computer computer gestartet.
13.1.12 startftp – FTP-Server starten Mit diesem Befehl starten Sie eine zuvor beendete oder neu erstellte FTP-Site. Syntax startftp -a SERVERx, -c computer, -v, -? Hilfe -a listet den oder die zu startenden Server auf. -c bezeichnet den oder die zu startenden Computer. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel startftp -c computer -a 1
In diesem Beispiel wird der erste FTP-Dienst auf dem Computer computer gestartet.
13.1.13 pauseweb – Webserver anhalten Mit diesem Befehl können Sie einen Webserver anhalten. Dies kann beispielsweise wünschenswert sein, wenn Sie ein paar kleine Änderungen vornehmen wollen, die die Anzeige einer Seite betreffen oder dafür sorgen, dass vor einer
308
Arbeiten mit den IIS-Administrationsskripts
Aktualisierung von Informationen weiterhin veraltete Daten (statt einer leeren Seite) angezeigt werden. Syntax pauseweb -a SERVERx, -c computer, -v, -? Hilfe -a listet den oder die anzuhaltenden Webserver auf. -c bezeichnet den oder die Computer, auf denen der Webserver angehalten wer-
den soll. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel pauseweb -c computer -a 1
Dieser Befehl hält den ersten Webserver auf dem Computer namens computer an. In meinem Fall ist dies der Standardwebserver.
13.1.14 pausesrv – Server anhalten Mit diesem Befehl können Sie einen oder mehrere Server via Befehlszeile starten. Trennen Sie gegebenenfalls mehrere Server durch Kommata. Syntax pausesrv -a SERVERx, -c computer, -v, -? Hilfe -a listet den oder die anzuhaltenden Server auf. -c bezeichnet den oder die Computer, auf denen der Server angehalten werden
soll. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel pausesrv -c computer -a w3svc/1
Dieser Befehl hält den ersten Webserver auf dem Computer namens computer an.
Kapitel 13 • Administrationsskripts
309
13.1.15 pauseftp – FTP-Server anhalten Mit diesem Befehl können Sie einem FTP-Server im Netzwerk anhalten. Syntax pauseftp -a SERVERx, -c computer, -v, -? Hilfe -a listet den oder die anzuhaltenden FTP-Server auf. -c bezeichnet den oder die Computer, auf denen der Dienst angehalten werden
soll. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel pauseftp -c computer -a 1
Dieser Befehl hält den ersten FTP-Server auf dem Computer namens computer an.
13.1.16 contweb – Webserver fortsetzen Wenn wir einen Webserver anhalten können, müssen wir ihn auch wieder fortsetzen können. Im Internetdienste-Manager gibt es dafür die Schaltfläche NEU STARTEN, das entsprechende Befehlszeilen-Tool heißt contweb. Syntax contweb -a SERVERx, -c computer, -v, -? Hilfe -a listet die Nummer(n) des oder der Server auf, auf denen der Webdienst neu
gestartet werden soll. -c bezeichnet den oder die Computer, auf denen der Webserver neu gestartet wer-
den soll. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel contweb -c computer -a 1
Mit diesem Befehl wird der angehaltene Webserver auf dem Computer namens computer neu gestartet.
310
Arbeiten mit den IIS-Administrationsskripts
13.1.17 contserv – Server neu starten Dieser Befehl wird zum Neustart eines angehaltenen Servers verwendet. Syntax contsrv -a SERVERx, -c computer, -v, -? Hilfe -a listet die Nummer(n) des oder der neu zu startenden Server auf. -c bezeichnet den oder die Computer, auf denen der Server neu gestartet werden
soll. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel contsrv -c computer -a msftpsvc/1
Dieser Befehl startet den momentan angehaltenen FTP-Dienst auf dem Computer computer neu.
13.1.18 contftp – FTP-Server neu starten Auf die gleiche Weise wie mit contweb und contsrv die jeweiligen angehaltenen Dienste neu gestartet werden, können Sie mit contftp einen angehaltenen FTPDienst neu starten. Syntax contftp -a SERVERx, -c computer, -v verbose, -? Hilfe -a listet die Nummer(n) des oder der neu zu startenden Server auf. -c bezeichnet den oder die Computer, auf denen der FTP-Dienst neu gestartet
werden soll. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkungen anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel contftp -c computer -a 1
Dieser Befehl startet den angehaltenen FTP-Server mit der Nummer 1 auf dem Computer computer neu.
Kapitel 13 • Administrationsskripts
311
13.1.19 chaccess – Zugriffsbeschränkungen ändern Sie können die Zugriffsbeschränkungen auf einem Server mit Hilfe des Befehls chaccess ändern, der sowohl in einer Stapelverarbeitungsdatei verwendet als auch über die Befehlszeile aufgerufen werden kann. Die vorhandenen Zugriffsbeschränkungen lauten Read (Lesen), Write (Schreiben), Script (Skriptzugriff), Execute (Ausführen) und Browse (Durchsuchen) und entsprechen denen auf der Registerkarte BASISVERZEICHNIS (Abbildung 13.7), die Sie im Dialogfeld EIGENSCHAFTEN einer Website finden.
Abb. 13.7: Auf der Registerkarte BASISVERZEICHNIS werden die Zugriffsbeschränkungen aufgelistet. Diese können Sie wahlweise auf dieser Registerkarte oder mit Hilfe des Befehls chaccess setzen.
Syntax chaccess -a ADSPfad, -c computer, +/+/+/+/-
read write script browse
312
Fazit
+/- execute -v, -? Hilfe -a bezeichnet den relativen Pfad zum Rechner. -c ist eine Liste mit Computernamen, auf die die Änderungen angewandt werden
sollen. +/- steuert die Beschränkungen. Mit dem Pluszeichen (+) aktivieren Sie eine Beschränkung, mit dem Minuszeichen (-) deaktivieren Sie. Der (englische)
Name der Zugriffsbeschränkung folgt direkt hinter dem Zeichen. -v (ausführlicher Modus) bewirkt, dass die Skript-Engine bei der Ausführung des
Skripts Anmerkunge n anzeigt. -? zeigt die Hilfe für den Befehl an.
Beispiel chaccess -a w3svc/1 -c computer +read +write +browse
Mit diesem Befehl werden die Zugriffsbeschränkungen Lesen, Schreiben und Durchsuchen für den ersten Webdienst auf dem Computer mit Namen computer gesetzt.
13.2
Fazit Administrationsskripts sind eine bedeutsame Möglichkeit, die Remoteadministration oder eine Administrationsautomatisierung zu verwirklichen, bei der verschiedene Aspekte der WWW- und FTP-Dienste, die auf dem Computer ausgeführt werden, gesteuert werden können. Wenn Sie diese Befehle in Stapelverarbeitungsdateien verwenden, können Sie die Erstellung von Websites und virtuellen Verzeichnissen auf einem Server automatisieren, wodurch Ihnen stundenlange manuelle Konfigurationsarbeiten für jede Site im Internetdienste-Manager erspart bleiben. Aufgrund von Änderungen an einer Web- oder FTP-Site kann es notwendig werden, die Dienste anzuhalten und dann fortzusetzen bzw. neu zu starten. Mit den hier beschriebenen Skriptbefehlen können Sie auch diese Aufgaben ohne den Internetdienste-Manager ausführen. Auch das zeitgesteuerte Beenden von Diensten ist mit den Skriptbefehlen möglich. Beispielsweise könnte ein Skript die Web- oder FTP-Dienste Ihres Unternehmens nach Geschäftsschluss automatisch beenden und so den Sicherheitsgrad erhöhen. Dadurch ließe sich unbefugter Zugriff verhindern, denn die jeweiligen Mitarbeiter haben ihr Tagespensum zu diesem Zeitpunkt bereits abgeschlossen und benötigen nach Geschäftsschluss keinen Zugriff mehr auf die Sites.
Kapitel 13 • Administrationsskripts
313
Viele weitere Anwendungen für Administrationsskripts sind denkbar, und in jedem Büro sieht der entsprechende Bedarf anders aus. Welche Bedürfnisse Sie auch immer haben, ich bin sicher, dass Sie Skripts vorteilhaft finden werden.
Kapitel 14 IIS programmgesteuert administrieren 14.1 14.2 14.3 14.4
IIS mit Objekten und ADSI administrieren Die IIS-Metabasis IIS Admin Objects Fazit
316 317 320 326
316
IIS mit Objekten und ADSI administrieren
IIS umfasst eine Reihe Tools, mit denen Sie Dienste mit Hilfe von Skripts oder Anwendungen administrieren können. Die Daten, mit denen Sie hierbei arbeiten bzw. die Sie manipulieren, werden in der so genannten Metabasis gespeichert. Die Metabasis ist ein nichtflüchtiger Datenspeicher, der dank der Tatsache, dass die gespeicherten Daten nicht erst von der Festplatte geladen werden müssen, einen sehr schnellen Zugriff ermöglicht. Wie den meisten von uns bekannt sein dürfte, reicht die Zugriffsgeschwindigkeit auf Festplattendaten immer noch nicht ganz an die des Speicherzugriffs heran.
14.1
IIS mit Objekten und ADSI administrieren Die IIS-Konfigurationsdaten sind in der Metabasis als Binärwerte gespeichert. Um diese Werte bearbeiten zu können, müssen Sie IIS Admin Objects (IIS-Verwaltungsobjekte) verwenden. Es gibt Verwaltungsobjekte, die bestimmten Schlüsseltypen in der Metabasis entsprechen. Mit Hilfe von ASP oder Skripts können Sie eigene Anwendungen zur Remoteadministration Ihres IIS-Servers erstellen. Die Remoteadministration von IIS werden wir in Kapitel 15 näher beleuchten; die HTML-Oberfläche, die dort besprochen werden wird, wurde mit IIS Admin Objects erstellt. Es gibt zwei Möglichkeiten der IIS-Programmierung: Sie können die Verwaltungsobjekte verwenden – diesen Ansatz werden wir in diesem Kapitel beschreiben –, oder Sie benutzen das IIS Admin Base Object (IIS Admin Base Object). Das IIS Admin Base Object bietet Ihnen ein paar erweiterte Programmfunktionen. Das IIS Admin Base Object ist ein eher bescheidenes Interface, das in Verbindung mit COM+-kompatiblen Sprachen wie etwa C++ verwendet wird. Die Arbeit am IIS Admin Base Object erfolgt über eine Schnittstelle namens IMSAdminBase. Mit dieser Schnittstelle und der Programmiersprache C++ können Sie Anwendungen entwickeln, die zwecks Manipulation der IIS-Konfiguration Zugriff auf die Schlüssel und Werte der Metabasis gestatten. Um auf diese Funktionalität zugreifen zu können, müssen Sie mit so genannten »Handles« arbeiten. Handles beziehen sich auf Schlüssel in der Metabasis. Sie müssen die Methode OpenKey verwenden, um mit dem Handle einer Metabasis arbeiten zu können. Dabei ist der vollständige Pfad zum gewünschten Schlüssel in der Metabasis anzugeben, etwa in der Form /LM/MSFTPSVC/1 (dieser Pfad verweist auf den ersten FTP-Server des lokalen Rechners). Das IIS Admin Base Object hat einen Haupt-Handle namens METADATA_ MASTER_ROOT_HANDLE. Ungeachtet der Tatsache, dass es sich hierbei um einen Haupt-Handle handelt, stellt dieser trotzdem keinerlei Schutz gegen Multithread-Zugriff auf die Metabasis dar; das bedeutet, dass eine Multithread-Anwendung auf die Datenbank zugreifen kann und ein Thread den Wert eines Schlüssels ändert, ohne dass der oder die anderen Threads davon etwas mitbekommen. Dies
Kapitel 14 • IIS programmgesteuert administrieren
317
könnte ein Problem werden, wenn die Ausführung eines Threads von einem Wert abhängt, der in einem anderen Schlüssel gespeichert ist; die versehentliche Änderung eines Wertes kann zu einer Fehlfunktion der Anwendung führen. Auch das IIS Admin Base Object nutzt das Vererbungsprinzip, d.h. Sie können einem Basisobjekt oder einem übergeordneten Objekt einen Wert zuweisen und festlegen, dass jeder Unterschlüssel oder jedes Unterobjekt diese Einstellungen übernimmt. Mit dieser Funktion können Einstellungen auf einen ganzen Server oder eine gesamte Site angewandt werden; Änderungen, die an einzelnen Objekten vorgenommen werden, haben in diesem Fall Vorrang vor den globalen Einstellungen. Bei der Arbeit mit dem IIS Admin Base Object müssen Sie einige Benutzertypen kennen. Diese Benutzertypen erlauben die Klassifizierung Ihrer Kennungen durch die Anwendung. Derzeit verwendet IIS die folgenden vier Benutzertypen: •
IIS_MD_UT_FILE für Verzeichnis- und Dateieigenschaften
•
IIS_MD_UT_SERVER zur Konfiguration der Serverparameter
•
IIS_MD_UT_WAM zur Verwaltung von Webanwendungen
•
ASP_MD_UT_APP zur Konfiguration von ASP-Anwendungen
In Anhang D finden Sie eine vollständige Administrationsreferenz, die die Benutzertypen der einzelnen Objekte auflistet. Sie können das SDK (Software Development Kit) für die Windows 2000-Plattform unter http://msdn.microsoft.com/ downloads/sdks/platform/platform.asp herunterladen. Unten auf dieser ASPSeite wird das SDK in Komponenten unterteilt, so dass Sie nur das herunterladen müssen, was Sie auch brauchen. Das SDK ist eine wertvolle Informationsquelle, wenn es um die Entwicklung von Anwendungen zur IIS-Manipulation mit Hilfe des IIS Admin Base Objects geht. Die hier vorgestellten IIS Admin Objects werden als Objekte mit Automationsaktivierung betrachtet, d.h. sie gestatten über ihre Schnittstellen Datenmanipulationen mit Sprachen wie Visual Basic, VBScript, C++ oder JScript. Die Objekte fußen auf das ADSI (Active Directory Services Interface). Wir werden diese Objekte und das ADSI im Laufe des Kapitels noch ein wenig näher untersuchen, aber zunächst möchte ich Ihnen die Metabasis vorstellen, denn hier werden schließlich die Daten für IIS 5.0 gespeichert, und sie wird auch das Opfer Ihrer Manipulationen mit Hilfe der IIS Admin Objects sein.
14.2
Die IIS-Metabasis Wie bereits erwähnt, ist die Metabasis der alleinige Ablageort für alle Konfigurationsdaten, die mit IIS 5.0 in Zusammenhang stehen.
318
Die IIS-Metabasis
14.2.1 Struktur Die Metabasis ist ähnlich wie die Registrierdatenbank aufgebaut, denn auch sie verwendet ein hierarchisches System mit Schlüsseln und Werten. Die Knoten in der Metabasis-Struktur heißen Schlüssel. Diese Schlüssel beinhalten Werte, die IIS-Konfigurationswerte repräsentieren und als Metabasis-Eigenschaften bezeichnet werden. Wenn Sie bereits mit früheren IIS-Versionen gearbeitet haben, werden Sie die IISKonfigurationsschlüssel in der Registrierung wahrscheinlich kennen. Diese Werte sind von nun an in der Metabasis gespeichert, wodurch es erfreulicherweise möglich ist, die gleiche Eigenschaft für verschiedene Knoten unterschiedlich zuzuweisen. Sie werden außerdem feststellen, dass die Metabasis einen wesentlich schnelleren Zugriff auf die Daten gestattet, denn sie ist im RAM gespeichert, wenn der Server läuft. IIS Computer
FTP Service
Web Service
IISFTPInfo
IISWebInfo
IISFTPServer
IISFilters
IISFTPVDir
IISFilter
IISLogModules IISLogModule IISCustomLogModule IISMimeMap
IISCompressionSchemes IISWebServer IISWebVDir IISWebDir IISWebFile IISWebFile IISCertMapper IISFilters IISFilter
Abb. 14.1: Die IIS Admin Objects und ihre Beziehungen zueinander
Der oberste Schlüssel heißt IIS Computer und enthält diejenigen Eigenschaften, die für den gesamten IIS-Dienst auf dem Rechner Gültigkeit haben. Die Schlüssel werden darunter in verschiedene Dienste unterteilt, nämlich je einer für die FTPund für die WWW-Dienste, die auf dem Computer ausgeführt werden.
Kapitel 14 • IIS programmgesteuert administrieren
319
Jeder Dienst beinhaltet spezielle Schlüssel. Unter dem Schlüssel FTP Service finden Sie Schlüssel, die sich auf FTP-Server beziehen. Beachten Sie, dass die Rede von Servern ist, denn davon kann es mehrere geben. Analog kann auch der Schlüssel Web Service mehr als einen Webserver bearbeiten. Wenn Sie an den Schlüsseln Web Service oder FTP Service Änderungen vornehmen, dann wirken diese auf alle Server der jeweiligen Sorte, die auf dem Computer ausgeführt werden. Wie bereits oben gesagt wurde, können Sie auch an einzelnen Web- oder FTP-Servern Änderungen vornehmen, die dann Vorrang vor den globalen Einstellungen haben, welche auf der Computer- oder Dienstebene vorgenommen wurden.
14.2.2 Schlüsselnamen und Pfade Wenn wir im Zusammenhang mit der Metabasis von Schlüsseln reden, dann können Sie diese durchaus mit einem Verzeichnis in einem Dateisystem vergleichen. Die Schlüssel können einen Pfad bilden, indem sie – jeweils durch einen Schrägstrich getrennt – hintereinanderweg eingegeben werden. In der Metabasis können mehrere Schlüssel gleichen Namens vorhanden sein, sofern diese über unterschiedliche Pfade zu erreichen sind – ebenso, wie Sie zwei Dateien mit gleichem Namen in unterschiedlichen Verzeichnissen auf einem Computer speichern können. Um auf einen bestimmten Schlüssel mit den IIS Admin Objects zugreifen zu können, benötigen Sie den vollständigen Pfad zu diesem Schlüssel; dieser Pfad ist auch als ADSI-Pfad bekannt. Dieser Pfad beginnt immer mit IIS://, gefolgt von der IPAdresse oder dem Hostnamen des Computers. Ein Beispiel wäre IIS://localhost/ W3SVC/1; hiermit würden Sie auf den ersten Webserver auf dem lokalen Server zugreifen. Jeder Web- und FTP-Server verfügt über ein Basisverzeichnis (oder ein virtuelles Basisverzeichnis). Um auf das Basisverzeichnis unseres im vorherigen Absatz angegebenen Beispielservers zugreifen zu können, geben wir IIS://localhost/ W3SVC/1/ROOT ein. Alle übrigen Verzeichnisse sind Unterverzeichnisse dieses Verzeichnisses.
14.2.3 Vererbung von Eigenschaften Die meisten Eigenschaften, die in der Metabasis vorhanden sind, sind vererbbar, d.h. Sie können sich auf ein paar wenige Einstellungen beschränken und den von der Metabasis benutzten Speicher sehr klein halten. Schlüssel auf höheren Ebenen übergeben ihre Eigenschaften an untergeordnete Schlüssel, d.h. die untergeordneten Schlüssel erben die Einstellungen der übergeordneten Schlüssel. Ein gutes Beispiel dafür ist das Setzen von Dateiberechtigungen wie Schreiben oder Ausführen auf der Dienstebene (W3SVC). Alle identischen Schlüssel unterhalb dieses Basisschlüssels erben die Einstellung, sofern Sie nicht explizit etwas anderes festlegen.
320
IIS Admin Objects
Hinweis Wenn Sie das IIS-Snap-In verwenden und eine vererbbare Eigenschaft einstellen, wird ein Dialogfeld angezeigt, in dem Sie festlegen müssen, für welche Unterknoten Sie die Eigenschaft setzen wollen. Wenn Sie hingegen eine vererbbare Eigenschaft mit Hilfe eines Skripts einstellen, haben Sie keine Eingriffsmöglichkeit – die Unterknoten erben die Einstellung automatisch. In Anhang D finden Sie eine Liste aller Eigenschaften. Dort ist auch ersichtlich, welche Eigenschaften vererbbar sind.
14.2.4 Sicherheit und Zuverlässigkeit Die Metabasis liegt im Arbeitsspeicher – einen Neustart oder das Herunterfahren des Computers überlebt sie nicht. Aus diesem Grund wird sie auf der Festplatte gespeichert und beim Start von IIS wieder geladen. Ferner speichert IIS die Metabasis regelmäßig auf die Festplatte, um sicherzustellen, dass kürzlich vorgenommene Änderungen erhalten bleiben. Wenn Sie den Dienst beenden, wird die Metabasis erneut auf die Festplatte gespeichert. Standardmäßig erhält die Metabasis den Dateinamen metabase.bin und wird im Verzeichnis \Inetsrv abgelegt. Es ist von fundamentaler Wichtigkeit, die Datei gegen unbefugten Zugriff zu schützen; speichern Sie sie deswegen immer auf einer NTFS-Partition und konfigurieren Sie die Zugriffsberechtigungen entsprechend. Sie können die Datei in ein anderes Verzeichnis verschieben oder sie umbenennen. In diesem Fall müssen Sie allerdings ein paar Änderungen in der Registrierung vornehmen, damit IIS die Datei beim Start finden kann. Der hierzu zu konfigurierende Registrierungsschlüssel heißt HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetMgr\Parameters. Sie müssen für diesen Schlüssel einen Wert vom Typ REG_SZ hinzufügen und diesen dann MetadataFile nennen. MetadataFile beinhaltet den vollständigen Pfad zur Metabasis – einschließlich Laufwerksbuchstabe und Dateiname.
14.3
IIS Admin Objects Microsoft hat die IIS Admin Objects verfügbar gemacht, um die Aufgabe der programmgesteuerten Administration zu erleichtern. Diese Objekte arbeiten mit Automationsaktivierung und basieren auf dem ADSI, d.h. jede Sprache, die Automatisierungen unterstützt, kann auf diese Objekte zugreifen und sie manipulieren. Sowohl VBScript als auch JScript ermöglichen die Automationsaktivierung, und da beide Bestandteil von IIS sind, verfügen Sie bereits über alle Werkzeuge, die Sie brauchen.
Kapitel 14 • IIS programmgesteuert administrieren
321
14.3.1 Übersicht Mit Hilfe der IIS Admin Objects können Sie eine ASP-Seite oder eine benutzerdefinierte Anwendung entwickeln und damit via Zugriff auf die entsprechenden Objekte die Eigenschaften der Metabasis manipulieren. Wenn man berücksichtigt, was weiter oben über die Struktur der Metabasis gesagt wurde, dann ist leicht verständlich, dass man diese Eigenschaften mit den IIS Admin Objects wahlweise für den gesamten Server oder für einzelne Dateien oder Dienste einstellen kann – man muss lediglich das richtige Objekt verwenden, und dafür benötigt man den vollständigen Pfad zu diesem Objekt, beginnend mit dem Basisverzeichnis. Die IIS Admin Objects spiegeln die Objekthierarchie der Metabasis wieder, wie sie in Abbildung 14.1 dargestellt ist. Sie werden im Verlauf dieses Abschnitts sehen, wie Sie auf das gewünschte Objekt zugreifen können, indem Sie sich einfach von oben nach unten durch diese Hierarchie hangeln.
14.3.2 ADSI ADSIs (Active Directory Service Interfaces) machen eine Standardsyntax für die Arbeit mit IIS Admin Objects verfügbar. Mit Hilfe dieser Syntax können Sie auf die benötigten Konfigurationsdaten zugreifen. Wie bereits erwähnt, verwendet das HTML-basierte Administrationstool diese Objekte, um eine Remotekonfiguration ausführen zu können. Der jeweilige Metabasis-Pfad referenziert die IIS Admin Objects. Wenn Sie beispielsweise auf den zweiten Webserver auf einem Computer namens websrvone zugreifen wollen, dann müssen Sie den vollständigen ADSI-Pfad (AdsPath) eingeben, etwa so: IIS://websrvone/W3SVC/2. ADSI-Objekte Die IIS Admin Objects implementieren die IADs-Schnittstelle, die durch den ADSI-Standard definiert ist. Daraus ergibt sich die Implementierung der folgenden Funktionen: •
eine Methode zum Auslesen der Namespace-Eigenschaften
•
ein Pfad zur Schemadefinition eines Objekts
•
Kenndaten wie etwa der Name und der Typ eines Objekts
•
ein Cache-System
•
eine Methode zum Einstellen und Auslesen von Eigenschaften eines bestimmten Knoten in der Metabasis
322
IIS Admin Objects
•
eine Möglichkeit, den Pfad eines dem Objekt übergeordneten Objekts auszulesen
•
Bindungsdaten für eindeutig identifizierende Objektinstanzen in einem Verzeichnisbaum
ADSI-Containerobjekte ADSI-Containerobjekte sind diejenigen IIS Admin Objects, die durch Implementierung der Schnittstelle IADsContainer andere Objekte enthalten können. Die als Containerobjekte klassifizierten IIS Admin Objects sind IIsComputer und IIsWebVirtualDir. IIsComputer enthält zwei direkt untergeordnete Objekte namens IIsWebService und IIsFtpService, während IIsWebVirtualDir ein IIsWebDirectory-, ein IIsWebVirtualDir- und ein IIsWebFile-Objekt enthalten kann. Die Schnittstelle IADsContainer ermöglicht die Ausführung der folgenden Prozeduren in Bezug auf die Container und ihre Objekte: •
Objekte in einem Container erstellen (Create)
•
Objekte aus einem Container löschen (Delete)
•
Eine Objektzählung in einem Container durchführen (Count)
•
Auf Objekte im Container zugreifen (GetObject)
•
Objekte auflisten (_NewEnum)
Nachfolgend jeweils ein Beispiel für die Verwendung der einzelnen Methoden. Create Set newObj = Object(KeyType, Name)
newObj wird für den Zugriff auf das neue Objekt im Container benutzt. Object ist der Name eines IIS-Objekts, der normalerweise von der Methode GetObject zurückgegeben wird (siehe auch das nachfolgende Codebeispiel). KeyType ist der Typ des zu erstellenden IIS Admin Object, Name der Name des neuen Objekts. Zum Beispiel: <% Dim WebSrvObject, SrvObject Set WebSrvObject = GetObject("IIS://computer/W3SVC") Set SrvObject = WebSrvObject.Create("IISWebServer", "5") %>
Dieser Codeausschnitt gibt zunächst den Namen des W3SVC-Objekts zurück, das auf einem Rechner namens computer abgelegt ist, und weist diesen der Variable WebSrvObject zu. In der nächsten Zeile wird die Variable SrvObject auf das neu erstellte IISWebServer-Objekt mit der Nummer 5 gesetzt.
Kapitel 14 • IIS programmgesteuert administrieren
323
Delete Object.Delete KeyType, Name
Object ist das von der Methode GetObject zurückgegebene IIS-Verwaltungsobjekt. KeyType ist der Typ und Name der Name des zu löschenden IIS Admin Object. Zum Beispiel: <% Dim WebSrvObject Set WebSrvObject = GetObject("IIS://computer/W3SVC") WebSrvObject.Delete "IISWebServer", "5" %>
Mit diesem Codeausschnitt löschen Sie das Objekt, welches weiter oben mit Create erstellt worden war. Hinweis Wenn das zu löschende Objekt Teil einer Anwendung war, dann wird zuerst die Methode AppDelete aufgerufen, um die Anwendungsdefinition zu entfernen, bevor das Objekt selbst entfernt wird. Überprüfen Sie das zu löschende Objekt gegebenenfalls vorher auf Zusammenhänge mit Anwendungen. Count Dies ist eine Eigenschaft des ADSI-Containerobjekts. Sie gibt die Anzahl der Objekte im Container zurück. _NewEnum Diese Eigenschaft gibt ein Auflistungsobjekt (»Enumerator«) zurück. Dieses kann von VBScript oder JScript zum Auslesen der Objekte in einem Container mit Hilfe einer For Each-Schleife verwendet werden.
14.3.3 Administrative Tasks Wie bereits mehrfach erwähnt, speichert die Metabasis die Konfigurationseigenschaften des IIS. Durch Verwendung von IIS Admin Objects können Sie diese Eigenschaften zwecks Konfiguration von IIS manipulieren, neue Web- und FTPSites erstellen, Berechtigungen zuweisen und andere administrative Aufgaben durchführen. Das HTML-basierte Administrationstool ist ein gutes Beispiel für die Verwendung der IIS Admin Objects. Dieses Tool verwendet zur IIS-Remoteadministration einen Webbrowser und wird in Kapitel 15 umfassend beschrieben. Sie können es verwenden, um sich mit den verschiedenen Aufgaben vertraut zu machen, die mit den IIS Admin Objects und den Metabasis-Eigenschaften ausgeführt werden können.
324
IIS Admin Objects
Ferner können Sie HTML-basierte Anwendungen entwickeln, die in einem Webbrowser ausgeführt werden und eine IIS-Serveradministration auf die gleiche Weise erlauben wie das genannte HTML-Administrationstool. Die Metabasis manipulieren Der Zugriff auf die IIS Admin Objects in der Metabasis erfolgt über eine hierarchische Struktur, den ADSI-Pfad. Dieser Pfad verwendet eine einem URL ähnliche Syntax. Die allgemeine Form dieser Syntax lautet IIS://[pfad], wobei pfad einen Verzeichnispfad repräsentiert, der zum gewünschten Objekt führt. Ein Beispiel für einen ADSI-Pfad wäre IIS://computer/MSFTPSVC; dieser Pfad gäbe Ihnen den Zugriff auf den FTP-Dienst, der auf dem Server computer ausgeführt wird. Der Server kann als Basisobjekt des FTP-Dienstes betrachtet werden und enthält außerdem alle anderen Objekte, die als untergeordnete Objekte des Basisobjekts zu betrachten sind. Um im Programmcode mit einem Objekt arbeiten zu können, verwenden Sie normalerweise die Methode GetObject, die den Namen eines Objekts zurückgibt, mit dem Sie arbeiten wollen; diesen Namen können Sie dann in Ihrem Code verwenden. <%@ LANGUAGE=VBScript %> <TITLE> <% Dim WebSrvObject Set WebSrvObject = GetObject("IIS://computer/W3SVC") %> Web Service Name ....<%= WebSrvObject.Name %> ADsPath ....<%= WebSrvObject.ADsPath %> Class ....<%= WebSrvObject.Class %> GUID ....<%= WebSrvObject.GUID %> Parent ....<%= WebSrvObject.Parent %> Schema ....<%= WebSrvObject.Schema %> Listing 14.1: Beispiellisting zum Holen der Eigenschaften eines ADSI-Objekts
Wenn Sie diesen Code in einer ASP-Datei platzieren und diese auf Ihrem Server ausführen, dann erhalten Sie eine Anzeige ähnlich der in Abbildung 14.2. Wie Sie sehen können, habe ich von der Methode GetObject das Objekt holen lassen, mit dem ich auf die Eigenschaften von W3SVC zugreifen kann. Hierbei handelt es sich um eine ganz simple ASP-Datei, die nur die Eigenschaften anzeigt, die dem zurückgegebenen Objekt W3SVC zugeordnet sind.
Kapitel 14 • IIS programmgesteuert administrieren
325
Abb. 14.2: Anzeige der sechs Eigenschaften des ADSI-Objekts W3SVC im Internet Explorer
Die erste Zeile des Codes definiert die Variable WebSrvObject, welche zur Aufnahme des von GetObject zurückgegebenen Objekts dient. Auf diese Weise können wir den Namen der Variablen beim Zugriff auf die Objekteigenschaften als Verweis auf das Objekt selbst verwenden, statt jedes Mal, wenn wir eine Eigenschaft benötigen, den vollständigen ADSI-Pfad eingeben zu müssen. Damit Sie die Methode GetObject oder ein anderes ASP-Skript, welches auf die Metabasis zugreift, verwenden können, müssen Sie über ein Administratorenkonto auf die ASP-Seite zugreifen; andernfalls erhalten Sie eine Fehlermeldung, dass der Server die Seite nicht öffnen kann, weil die Berechtigungen für die Methode GetObject nicht ausreichen. Der leichteste Weg, dies zu umgehen, besteht in der Zuweisung entsprechender Berechtigungen für das Verzeichnis \InetPub. Ich habe beispielsweise unter den SICHERHEITSEINSTELLUNGEN für dieses Verzeichnis die Gruppe Jeder der Benutzerliste hinzugefügt und dieser dann Vollzugriff auf das Verzeichnis gewährt. Hier liegt natürlich ein gewisses Sicherheitsrisiko vor, denn wenn der Server als Produktionsserver mit dem Internet verbunden ist, gestatten Sie es auf diese Weise allen Benutzern – internen wie externen –, auf das Verzeichnis \InetPub zuzugreifen und dort Anwendungen auszuführen, Dateien zu modifizieren oder zu löschen, oder sogar Trojaner und Viren hochzuladen und auszuführen. Deswegen sollten Sie, wenn Sie meinem Beispiel folgen wollen, dies zunächst auf einem Testsystem tun. Sobald Ihre Skripts so arbeiten, wie Sie es wünschen, können Sie sie auf einen Produktionsserver transferieren.
326
Fazit
Alternativ können Sie auch eine Anmeldeseite erstellen, auf der der Benutzer zur Angabe eines Benutzernamens und eines Kennworts aufgefordert wird, damit der Server ihn mit Hilfe der Standard- oder der NTLM-Authentifizierung authentifizieren kann. Auf diese Weise schützen Sie Ihren Produktionsserver vor unbefugtem Zugriff. Allerdings müssen Sie hierbei einen zusätzlichen Schritt beim Testen von Seiten einplanen, die die Methode GetObject benutzen.
14.4
Fazit In diesem Kapitel habe ich Ihnen einen Überblick über die Möglichkeiten der IISAdministration mit Hilfe von ASP-Skriptdateien gegeben. Ich habe Ihnen die Verwendung der HTML-Version des Internetdienste-Managers als Tool zur IISRemoteadministration gezeigt. Ferner wurde auf die Struktur der Metabasis eingegangen, in der die Konfigurationsdaten von IIS gespeichert sind, und beschrieben, wie die Schlüssel und Werte in Zusammenhang mit den verschiedenen IIS Admin Objects stehen. Im Verlauf dieses Kapitels wurde auch die ADSI-Hierarchie mit ADSI-Objekten und ADSI-Containerobjekten erläutert. Wenn Sie sehen wollen, wie das HTML-Administrationstool die Einstellung von Eigenschaften und die Manipulation des IIS-Dienstes realisiert, dann finden Sie die entsprechenden ASP-Dateien im Verzeichnis %winnt%\system32\inetsrv\ iisadmin. Nehmen Sie an diesen Dateien keine Änderungen vor, solange Sie keine Sicherungskopien davon angefertigt haben; durch Vornahme unsachgemäßer Änderungen an diesen Dateien können Sie die Remoteadministration unbedienbar machen.
Kapitel 15 Remoteadministration 15.1 15.2 15.3
Remoteadministration über das Internet Remoteadministration im Intranet Fazit
328 337 340
328
Remoteadministration über das Internet
Für die meisten Administratoren stellt sich die Frage, ob sie direkt am Server arbeiten wollen oder nicht, eigentlich gar nicht. Die meiste Zeit verbringt man normalerweise mit der Erledigung anderer administrativer Aufgaben am eigenen Schreibtisch, denn es ist nicht nur so, dass man einen Server eigentlich gar nicht wie eine normale Workstation benutzen kann, sondern er ist bei den meisten Firmen ohnehin in einem Spezialraum mit Zugangsbeschränkung und Klimaanlage weggeschlossen. Und wenn Sie das dauernde Summen der Netzteillüfter nicht zum Wahnsinn treibt – nun, die konstante Raumtemperatur von 18°C katapultiert Sie nach spätestens drei Tagen mit einem grippalen Infekt ins heimische Bett. Auf den Punkt gebracht: Die Remoteadministration des Servers wird hier der bevorzugte Ansatz sein, und genau das geht mit IIS. Dabei sind zwei Vorgehensweisen zu unterscheiden, nämlich der Zugriff auf den IIS-Server über ein Intranet oder die Arbeit über das Internet. Wir werden diese beiden Ansätze nacheinander beschreiben und ein paar der jeweiligen Vor- und Nachteile benennen. Es gibt hier keine optimale Vorgehensweise, und Sie müssen selbst entscheiden, welche Sie bevorzugen – natürlich nur, sofern Sie angesichts der Strukturen in Ihrer Organisation überhaupt eine Wahl haben.
15.1
Remoteadministration über das Internet Sie können zu Administrationszwecken mit einem konventionellen Webbrowser wie dem Internet Explorer oder dem Netscape Navigator über das Internet auf Ihren IIS-Server zugreifen. Zu diesem Zweck stellt IIS eine HTML-basierte Administrationsfunktion bereit. Natürlich müssen Sie diese zuerst einmal aktivieren. Die Aktivierung der Remoteadministrationsfunktionen für IIS erfolgt in einem einzigen, einfachen Schritt. Öffnen Sie den Internetdienste-Manager und erweitern Sie die Ansicht, dass die auf dem Server vorhandenen Websites angezeigt werden (siehe Abbildung 15.1). Wenn die Verwaltungswebsite nicht bereits ausgeführt wird, selektieren Sie den entsprechenden Eintrag in der Baumstruktur links und klicken Sie dann auf die Startschaltfläche in der Werkzeugleiste – schon haben Sie die Remoteadministration aktiviert. Wenn Sie dies aus Sicherheitsgründen nicht wollen, stellen Sie sicher, dass diese Website nicht ausgeführt wird. Wenn die Verwaltungswebsite ausgeführt wird, klicken Sie mit der rechten Maustaste darauf und rufen Sie das Dialogfeld EIGENSCHAFTEN auf (Abbildung 15.2). Beachten Sie den Parameter TCP-ANSCHLUSS im Feld IDENTIFIZIERUNG DER WEBSITE – dies ist die Nummer, mit der Sie über Ihren Browser auf den Administrationsbereich der Website zugreifen können.
Kapitel 15 • Remoteadministration
329
Abb. 15.1: Der Internetdienste-Manager beinhaltet eine Verwaltungswebsite für die Remoteadministration von IIS mit Hilfe eines Webbrowsers
Sie können die Nummer beliebig ändern – beispielsweise um über eine Firewall hinweg arbeiten zu können. Stellen Sie sicher, dass Sie keine häufig verwendeten TCP/IP-Anschlussnummern wie etwa 21 (FTP) oder 119 (Newsserver) auswählen. Hinweis Reden Sie im Zweifelsfall vor der Auswahl eines Anschlusses mit dem Netzwerkadministrator bzw. der Person, die für die Firewall Ihrer Organisation verantwortlich ist, und stellen Sie sicher, dass der gewählte Anschluss für Sie zugänglich ist, damit Sie auf die Verwaltungswebsite zugreifen können. Tipp TCP/IP-Anschlussnummern verweisen nicht auf einen physikalischen Anschluss, sondern auf eine Anwendung auf dem TCP/IP-Server. Nach der Konfiguration der Anschlussnummer müssen Sie die Zugriffsrechte für die Verwaltungswebsite einstellen. Hierbei müssen Sie zunächst die Operatoren auswählen, die über eine HTTP-Verbindung auf die Verwaltungswebsite zugreifen können. Wählen Sie also die Registerkarte OPERATOREN (Abbildung 15.3) des Dialogfelds EIGENSCHAFTEN VON VERWALTUNGSWEBSITE.
330
Remoteadministration über das Internet
Abb. 15.2: Das Dialogfeld EIGENSCHAFTEN VON VERWALTUNGSWEBSITE, wo Sie die Konfigurationsparameter für die Verwaltungswebsite einstellen können
Wie Sie sehen, hat unter Windows 2000 nur die Gruppe Administratoren standardmäßigen Zugriff auf die Verwaltungswebsite. Sie können nach Belieben andere Konten oder Gruppen hinzufügen; klicken Sie auf die Schaltfläche HINZUFÜGEN, um das Dialogfeld BENUTZER ODER GRUPPEN AUSWÄHLEN (Abbildung 15.4) aufzurufen. Hier können Sie die gewünschten Gruppen- oder Benutzerkonten auswählen. Wählen Sie die gewünschten Benutzer und Gruppen aus und klicken Sie auf die Schaltfläche HINZUFÜGEN, um Sie auf die Liste der berechtigten Benutzer zu setzen. Wenn Sie alle gewünschten Konten gewählt haben, klicken Sie auf die Schaltfläche OK, um wieder zur Registerkarte OPERATOREN des Dialogfelds EIGENSCHAFTEN zurückzukehren. Eine weitere Sicherheitseinstellung, die Sie vornehmen können, ist die Beschränkung des Zugriffs auf die Verwaltungswebsite dem auf dem von Ihnen spezifizierten Computer. Zu diesem Zweck müssen Sie die Registerkarte VERZEICHNISSICHERHEIT (Abbildung 15.5) im Dialogfeld EIGENSCHAFTEN selektieren.
Kapitel 15 • Remoteadministration
331
Abb. 15.3: Die Registerkarte OPERATOREN des Dialogfelds EIGENSCHAFTEN VON VERWALTUNGSWEBSITE. Hier können Sie Windows-Konten der Liste der Operatoren hinzufügen, die sich zu Administrationszwecken über HTTP-Verbindungen mit dem Webserver verbinden können.
Wir sind bereits in früheren Kapiteln dieses Buches, als es um sicherheitsrelevante Fragen ging, auf diese Registerkarte gestoßen. Wenn Sie die Schaltfläche BEARBEITEN anklicken, können Sie den Zugriff auf einzelne Computer, Computergruppen oder Domänen beschränken. Sie wählen zu diesem Zweck die Option ZUGRIFF VERWEIGERT im Dialogfeld BESCHRÄNKUNGEN FÜR IP-ADRESSEN UND DOMÄNENNAMEN (Abbildung 15.6) für die gewünschten Komponenten aus. Diese Option ist praktisch, wenn Sie bereits von vornherein wissen, welche Computer Sie für die Serververwaltung verwenden werden. Wenn Sie bei einem Internetprovider ein Konto haben, der mit dynamischer IP-Adresszuweisung arbeitet, dann wird diese Funktion bei Ihnen nicht funktionieren, denn Ihr Rechner erhält bei jedem Verbindungsaufbau eine andere IP-Adresse. Einige Provider arbeiten außerdem mit einem IP-Adresspool, bei dem die Adressen nicht nur dynamisch zugewiesen werden, sondern neu verwendet werden können, wenn ihre Verbindung sich im Leerlauf befindet. Dies macht die Sache noch schwieriger, denn in einem solchen Fall wechselt die IP-Adresse Ihres Rechners sogar während der Verbindung, sobald kein konstanter Datenstrom mehr vorhanden ist.
332
Remoteadministration über das Internet
Abb. 15.4: Das Dialogfeld BENUTZER ODER GRUPPEN AUSWÄHLEN erlaubt das Hinzufügen von Active-Directory-Benutzern und -Gruppen, die auf dem Server liegen, so dass Sie Operatoren für die Administration der Website auswählen können
Die anderen beiden Möglichkeiten bieten sich hier eher an. Wenn Sie beispielsweise die Option MEHRERE COMPUTER selektieren wollen, wenden Sie sich zuvor an Ihren Internetprovider und lassen Sie sich mitteilen, welchem Bereich die von ihm verwendeten IP-Adressen entstammen. Die meisten Provider arbeiten nur mit einer Klasse von IP-Adressen (etwa die Klassen A, B oder C); durch die entsprechende Eingabe können Sie dann den gesamten IP-Adressbereich abdecken, den Ihr Provider benutzt. Nachteil: Über einen Rechner, der eine IP-Adresse aus dem gleichen Bereich hat, könnte Ihre Website theoretisch immer noch von einem Unbefugten administriert werden. Dies wäre natürlich nur möglich, wenn dieser die Adresse der Website, die Anschlussnummer und die Kombination von Benutzernamen und Kennwort kennen würde. Nicht sehr wahrscheinlich, aber immerhin noch möglich. Die letzte Option – die Beschränkung auf den Domänennamen – funktioniert ähnlich wie die vorhergehende Einstellung, nur mit dem Unterschied, dass ein »Fremdcomputer«, der unberechtigterweise Administrationsaufgaben durchführen will, aus der gleichen Domäne stammen muss (und damit gar nicht so fremd sein kann).
Kapitel 15 • Remoteadministration
333
Abb. 15.5: Klicken Sie auf die Schaltfläche BEARBEITEN im Abschnitt BESCHRÄNKUNGEN FÜR IP-ADRESSEN UND DOMÄNENNAMEN, um den Zugriff auf die Verwaltungswebsite auf bestimmte Computer zu beschränken
In der Regel werden Sie Ihre Website aus dem eigenen Firmennetzwerk heraus bearbeiten. Dies kann wahlweise über die HTML-Oberfläche oder mit Hilfe der MMC über einen anderen Computer erledigt werden. Wir werden auf diese Option weiter unten in diesem Kapitel im Abschnitt »Remoteadministration im Intranet« noch näher eingehen. Nachdem Sie nun die notwendigen Zugangsbeschränkungen eingestellt haben, klicken Sie auf die Schaltfläche OK, um die Änderungen zu übernehmen und das Dialogfeld EIGENSCHAFTEN zu schließen. Öffnen Sie nun Ihren Lieblingsbrowser und geben Sie in der Adressleiste den Namen oder die IP-Adresse Ihrer Website gefolgt von einem Doppelpunkt und der Anschlussnummer ein, etwa http://207. 169.52.31:6765. Nach kurzer Zeit sollte das Verwaltungsfenster (Abbildung 15.7) in Ihrem Browser geöffnet werden. Wie aus der Abbildung ersichtlich ist, haben Sie hinsichtlich der Administration von Web- und FTP-Sites vollständigen Zugriff auf Ihren Webserver. Sie können im rechten Rahmen eine Site wählen und diese beenden, starten oder anhalten, indem Sie den entsprechenden Hyperlink im linken Frame selektieren.
334
Remoteadministration über das Internet
Abb. 15.6: Das Dialogfeld BESCHRÄNKUNGEN FÜR IP-ADRESSEN UND DOMÄNENNAMEN. Hier werden alle Computer angezeigt, die mit der Verwaltungswebsite auf meinem Server eine Verbindung herstellen dürfen – in diesem Fall die Rechner mit den IP-Adressen 169.254.76.14 und 127.0.0.1.
Abb. 15.7: Der Internet Explorer zeigt die Weboberfläche des InternetdiensteManagers, über die Sie Ihre Website administrieren können
Tipp Wenn Sie bei der Bewegung des Mauszeigers über einen dieser Hyperlinks auf die Statusleiste achten, werden Sie bemerken, dass diese Funk-
Kapitel 15 • Remoteadministration
335
tionalität mit Hilfe von JavaScript realisiert wurde. Jeder Hyperlink führt eine JavaScript-Funktion aus, die die entsprechenden Befehle an den Server sendet, wo die gewählten Vorgänge dann ausgeführt werden. Die Liste im linken Rahmen listet alle verfügbaren Befehle und Funktionen auf. Sie werden sehen, dass die gleichen Funktionalitäten wie bei der MMC-Konsole auch über die Weboberfläche ausführbar sind. Abbildung 15.8 zeigt ein Beispiel für ein paar Administrationsfunktionen.
Abb. 15.8: Die Eigenschaften der Website der Marketingabteilung, dargestellt als HTML-Seite
Die Hyperlinks im linken Rahmen bringen Sie zu HTML-Seiten, die den jeweiligen Registerkarten im Dialogfeld EIGENSCHAFTEN der Web- oder FTP-Site entsprechen. Wenn Sie hier allerdings Änderungen vornehmen, müssen Sie keine ÜBERNEHMEN- oder OK-Schaltflächen anklicken, sondern die Schaltfläche SPEICHERN unten auf der Seite betätigen, um die Änderungen an einer Site zu übernehmen. Bei Anklicken der Grafik Zurück im linken Frame wird wieder die Startseite (Abbildung 15.7) aufgerufen. Der Vorteil der Siteadministration über HTTP besteht darin, dass Sie Ihren Webserver von jedem beliebigen Betriebssystem aus verwalten können – der verwendete Browser muss lediglich JavaScript und die Grafikanzeige unterstützen. Das
336
Remoteadministration über das Internet
bedeutet, dass Sie nach Belieben den Internet Explorer unter Windows oder Netscape unter Linux usw. nutzen können. Durch Eingabe der Adresse http://%servername%/iishelp/iis/misc/default.asp können Sie auch auf die Onlinehilfe und die Dokumentation von IIS zugreifen (ersetzen Sie die Variable %servername% durch den Namen oder die IP-Adresse des Servers). Hinweis Eine kleine Schrulle, die Sie bemerken werden, wenn Sie den BERECHTIGUNGS-ASSISTENTEN oder eine der Sicherheitsoptionen (wie etwa die Beschränkung von IP-Adressen oder Domänennamen) wählen, besteht darin, dass der Computer ein neues Browserfenster öffnet, welches die für die gewählte Funktion notwendigen HTML-Seiten anzeigt.
15.1.1 Eine neue Website erstellen Zu Übungszwecken wollen wir einmal mit dem HTML-Verwaltungstool eine neue Website erstellen. Stellen Sie zunächst sicher, dass sich auf dem Server ein Verzeichnis befindet, in dem die zu erstellende Website untergebracht werden wird. Öffnen Sie nun wie oben beschrieben von einem Remotecomputer aus mit einem Webbrowser die Verwaltungswebsite. Vergewissern Sie sich, dass die IP-Adresse des Servers gewählt ist, und klicken Sie dann auf die Option NEU im linken Frame. Der ASSISTENT ZUM ERSTELLEN EINER NEUEN WEBSITE wird geöffnet. Klicken Sie auf WEITER. Sie können nun wählen, ob Sie eine neue Web- oder eine FTP-Site erstellen wollen. Lassen Sie die Voreinstellung WEBSITE selektiert und klicken Sie auf WEITER. Geben Sie im folgenden Textfeld eine Beschreibung für die Website ein. Wenn Sie nun die Schaltfläche WEITER anklicken, werden Sie zur Eingabe der Websitebindungen aufgefordert. Hierzu gehören die zu verwendende IP-Adresse, die Anschlussnummer, und – bei sicheren Sites – die SSL-Anschlussnummer. Geben Sie die notwendigen Informationen ein und klicken Sie auf WEITER. Wenn die Seite PFAD angezeigt wird, können Sie den Pfad zu dem Verzeichnis eingeben, auf dem der Inhalt der Website liegen wird. Sie können auch die Schaltfläche DURCHSUCHEN verwenden, um das Verzeichnis auszuwählen. Ferner können Sie den anonymen Zugriff auf die Site ermöglichen, indem Sie die Option ANONYMEN ZUGRIFF AUF DIE SITE ZULASSEN markieren. Klicken Sie nach Eingabe des Pfadnamens auf WEITER, um die Seite ZUGRIFFSBERECHTIGUNGEN aufzurufen. Auf dieser Seite können Sie die Schreib-, Lese- und Skriptingberechtigungen für die neue Site konfigurieren. Alle hier vorgenommenen Änderungen haben gegebenenfalls Vorrang vor den globalen Einstellungen, die für die Website vorge-
Kapitel 15 • Remoteadministration
337
nommen wurden. Dabei gilt diese Vorrangstellung nur für die neue Website, nicht jedoch für andere Sites auf dem Server. Klicken Sie auf FERTIG STELLEN. Nach ein paar Sekunden sehen Sie die neu erstellte Site in der Liste der auf dem Server vorhandenen Websites. Sie werden dabei feststellen, dass die Site noch nicht gestartet wurde. Dies ist der richtige Zeitpunkt, um ein paar weitere administrative Aufgaben zu üben: Markieren Sie die neue Site und klicken Sie auf die Option Starten im linken Frame. Sie können nun ein Programm zur Publikation von Websites – wie etwa Microsoft FrontPage – verwenden, um Inhalte für die neue Site zu erstellen. Hinweis Wie schnell Ihnen Ihre neue Site angezeigt wird, hängt von der Geschwindigkeit Ihrer Internetverbindung ab.
15.2
Remoteadministration im Intranet Wie bereits weiter oben erwähnt, können Sie die HTML-Oberfläche nicht nur zur Remoteadministration über das Internet, sondern auch über ein Intranet verwenden. Wenn Sie mit Website-Operatoren arbeiten, die nicht mit dem Internetdienste-Manager oder dem Konzept der MMC vertraut sind, dann können Sie diesen Operatoren anbieten, die Administration mit Hilfe der im vorherigen Abschnitt erläuterten Vorgänge zu administrieren. Die von mir bevorzugte Methode zur Administration einer Intranetsite ist jedoch die Verwendung der Funktionen, die in die MMC integriert sind. Die Abbildung 15.9 zeigt den Internetdienste-Manager bei vorhandener Verbindung zu einem anderen Server namens Pii350 in meinem Netzwerk. Wie Sie der Abbildung 15.9 entnehmen können, ist die Oberfläche bei der Remoteadministration identisch mit der zur Administration des lokalen Servers – mit dem einzigen Unterschied, dass ich auf einen Remoteserver zugreife. Beachten Sie die recht subtilen Unterschiede in der Konsole, die darauf hindeuten, dass ich einen Remoteserver administriere. Im Baumdiagramm links ähnelt das Remoteserversymbol dem Symbol eines Netzwerkcomputers, und im rechten Fenster finden Sie in der Spalte LOKAL die Feststellung, dass Pii350 eben nicht lokal ist. Ohne diese eher kosmetischen Anzeichen würde ein Benutzer gar nicht bemerken, dass er einen Remoteserver administriert, denn Befehle, Menüoptionen und Dialogfelder sind absolut identisch. Abbildung 15.10 zeigt das Dialogfeld EIGENSCHAFTEN VON STANDARDWEBSITE des Remoteservers. Sie sehen: Es besteht kein Unterschied zum lokalen Server.
338
Remoteadministration im Intranet
Abb. 15.9: Der Internetdienste-Manager ermöglicht Ihnen die Verbindung mit anderen IIS-Servern zwecks Administration und Konfiguration
Hinweis Je nach Geschwindigkeit Ihres Netzwerks werden Sie eventuell eine ganz kleine Verzögerung bei der Anzeige der Dialogfelder oder Eigenschaften bemerken, die sich auf Remotesites beziehen. Dies liegt an der Übertragungslatenz der Daten im Netzwerk. Was wir bis jetzt noch nicht erwähnt haben, ist die Frage, wie man mit dem Internetdienste-Manager eine Verbindung zu einem Remoteserver herstellt. Nun, das ist ein einfacher Vorgang. Öffnen Sie, falls nicht bereits geschehen, den Internetdienste-Manager und wählen Sie den Eintrag INTERNET-INFORMATIONSDIENSTE im linken Fensterbereich. Selektieren Sie dann aus dem Menü VORGANG den Eintrag VERBINDEN, um das Fenster MIT COMPUTER VERBINDEN (Abbildung 15.11) aufzurufen. Geben Sie im angezeigten Textfeld den Namen des Servers ein, auf dem der IISDienst liegt, den Sie administrieren wollen, und klicken Sie dann auf OK. Nach einer ganz kurzen Verzögerung, während derer die MMC den Computer im Netzwerk sucht, wird er samt seiner IIS-Diensteinträge in der Liste angezeigt. Das war es schon.
Kapitel 15 • Remoteadministration
339
Abb. 15.10: Das Dialogfeld EIGENSCHAFTEN VON STANDARDWEBSITE ist für lokale und Remoteserver absolut identisch
Abb. 15.11: Das Dialogfeld MIT COMPUTER VERBINDEN. Hier geben Sie den Namen des Servers ein, mit dem Sie eine Verbindung herstellen wollen.
Hinweis Sie müssen keinen Windows 2000 Server verwenden, um die IIS-Installation auf einem anderen Windows 2000 Server zu administrieren; genauso gut können Sie Windows 2000 Professional verwenden, denn die Versionen der dort verwendeten MMC und des IIS sind mit denen von Windows 2000 Server identisch. Umgekehrt geht das natürlich auch.
340
Fazit
15.2.1 Verzeichnissicherheit eines Remoteservers mit der MMC ändern Im Folgenden wollen wir zu Übungszwecken die Einstellung der Verzeichnissicherheit auf einem Remoteserver mit Hilfe der MMC durchführen. Öffnen Sie den Internetdienste-Manager und wählen Sie das Symbol INTERNETINFORMATIONSDIENSTE in der Baumstruktur im linken Fenster. Selektieren Sie nun aus dem Menü VORGANG den Eintrag VERBINDEN. Wenn das Dialogfeld MIT COMPUTER VERBINDEN angezeigt wird, geben Sie den NetBIOS-Namen oder die IP-Adresse des Computers ein, mit dem Sie zu Remoteadministrationszwecken eine Verbindung herstellen wollen. Klicken Sie dann auf OK. Wenn die Verbindung hergestellt ist, werden Ihnen die auf dem Remotecomputer vorhandenen Sites und Dienste unterhalb der Sites und Dienste des lokalen Computers angezeigt. Klicken Sie mit der rechten Maustaste auf den Eintrag STANDARDWEBSITE oder eine andere Site auf dem Remoteserver und wählen Sie aus dem Kontextmenü den Eintrag EIGENSCHAFTEN. Die Dialogfelder sind für lokale und Remotecomputer identisch. Wählen Sie also im Dialogfeld EIGENSCHAFTEN die Registerkarte VERZEICHNISSICHERHEIT. Klicken Sie im Abschnitt STEUERUNG DES ANONYMEN ZUGRIFFS UND DER AUTHENTIFIZIERUNG auf die Schaltfläche BEARBEITEN. Nun wird das Dialogfeld AUTHENTIFIZIERUNGSMETHODEN aufgerufen. Klicken Sie hier im Abschnitt BESCHRÄNKUNGEN FÜR IP-ADRESSEN UND DOMÄauf die Schaltfläche BEARBEITEN, um die Zugriffssteuerung basierend auf IP-Adresse oder Domänennamen zu konfigurieren. Wenn Sie die notwendigen Änderungen vorgenommen haben, klicken Sie auf die Schaltfläche OK, um das Dialogfeld EIGENSCHAFTEN für diese Website zu schließen.
NENNAMEN
Hinweis Der einzige Sicherheitsvorgang, der sich nicht von einem Remotecomputer aus durchführen lässt, ist der Vorgang SERVERZERTIFIKAT. Die Anforderung und Konfiguration eines Serverzertifikats für einen Server lässt sich nur lokal auf eben diesem Server durchführen.
15.3
Fazit Die Remoteadministration des IIS-Servers ist häufig praktisch, denn meistens sitzt der Administrator doch nicht vor dem Server, auf dem der IIS-Dienst ausgeführt wird. Zu diesem Zweck können Sie die zahlreichen praktischen Funktionen verwenden, die IIS für die Remoteadministration anbietet, um diese von einem anderen Computer oder Server aus durchzuführen.
Kapitel 15 • Remoteadministration
341
Wenn Sie alleiniger Administrator aller IIS-Server in Ihrer Firma sind und diese Server im lokalen Netzwerk administrieren, werden Sie die Vorzüge des Internetdienste-Managers in der MMC-Konsole zu schätzen wissen, denn hier finden Sie eine ausgesprochen konsistente Oberfläche. Wenn Sie jedoch mit Operatoren arbeiten, die mit der MMC nicht vertraut sind und lieber in einer bekannten Umgebung arbeiten wollen, dann können Sie die HTML-basierten Administrationsdienst über die Verwaltungswebsite verfügbar machen. Auf diese Weise können die Administratoren die Site von einem Remotecomputer aus mit dem bevorzugten Browser über die HTML-Oberfläche verwalten. Wenn Sie die Remoteadministration mit Hilfe der HTML-Oberfläche und der Verwaltungswebsite gestatten, dürfen Sie keinesfalls die Sicherheitseinstellungen vernachlässigen. Durch Zuweisung der entsprechenden Windows 2000-Konten und angemessener Computerbeschränkungen können Sie eine sichere Methode zur IIS-Administration über das Internet bereitstellen.
Teil III
Anwendungsentwicklung Kapitel 16 Kapitel 17
Active Server Pages Installierbare ASP-Komponenten
Kapitel 16 Active Server Pages 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 16.10 16.11 16.12 16.13 16.14 16.15
ASP-Seiten erstellen Skriptsprachen Prozeduren Auflistungen Verarbeitung von Benutzereingaben Komponenten und Objekte Der Objektbereich Inhalte senden Dateien übermitteln Sitzungen verwalten Auf Datenquellen zugreifen Transaktionen Skriptdebugging Integrierte ASP-Objekte Fazit
348 353 359 361 362 364 366 367 369 370 372 378 379 380 381
346
ASP (Active Server Pages) wurde als Umgebung für serverseitige Skripts entwickelt. Sie können zur Erstellung von ASP-Seiten VBScript oder JScript verwenden und damit dynamische Webseiten erstellen, Datenbankzugriffe auf dem Server ermöglichen, COM-Komponenten aufrufen und Anwendungen ausführen. Das schönste an ASP ist, dass es browserunabhängig arbeitet, d.h. jeder Webbrowser, der HTML 4.0-Tags verarbeiten kann, zeigt die Seiten an, weil die Skripts auf dem Server ausgeführt werden. Und was hat das alles nun mit der IIS-Administrierung zu tun? Nun, ASP kann nicht nur das Leben eines Webentwicklers erheblich vereinfachen, sondern Sie können es auch verwenden, um mit IIS zu arbeiten und nicht nur, um dynamische Inhalte zu erstellen. Zu diesem Zweck benötigen Sie jedoch ein grundlegendes Verständnis von ASP. Ich kann an dieser Stelle natürlich keinen umfassenden Kurs zu diesem Thema anbieten, aber ich will Ihnen zumindest so viele Informationen geben, dass Sie ASP für einfache Aufgaben einsetzen können und auch wissen, wo Sie im Bedarfsfalle weitere Informationen finden. Sie können die in diesem Kapitel und in Kapitel 14 enthaltenen Informationen verwenden, um Ihren Server mit ASP zu administrieren. Mit den IIS Admin Objects und beliebigen COM-Komponenten, die von Ihrer firmeneigenen Entwicklungsabteilung erstellt wurden, können Sie ASP zu Ihrem Vorteil nutzen. Einer der überzeugendsten Gründe für den Einsatz von ASP bei der Siteadministration ist die Möglichkeit, Webseiten mit Hilfe von Cookies oder Skripts speziell auf Benutzer auszurichten, indem der Sitzungsstatus berücksichtigt wird. Nebenbei: Wenn Sie ASP verstehen, brauchen Sie Perl oder andere CGI-Skriptsprachen auch nicht zu lernen. ASP kann sich auch bei der Arbeit mit einer Site als vorteilhaft erweisen, die Autorisierungen benötigt. Sie können mit Hilfe von Skripts auf eine Datenbank mit Benutzernamen und Kennwörtern zugreifen und es Benutzern gestatten, eigene Kombinationen von Benutzernamen und Kennwörtern einzusetzen. Die Daten werden in der Datenbank abgelegt, in der Sie die Zugriffsmöglichkeiten eines Benutzers auf die Site steuern können. Wenn Sie Änderungen vornehmen und der Benutzer sich danach wieder anmeldet, erhält er Datenzugriff nur im von Ihnen vorgesehenen Umfang. Wenn Sie mit früheren Versionen von ASP vertraut sind, werden Sie schnell feststellen, dass die mit IIS 5.0 ausgelieferte Version über eine ganze Reihe neuer oder geänderter Funktionen verfügt. Die beiden neuen Methoden Server.Transfer und Server.Execute ermöglichen bei dieser ASP-Version eine Flusskontrolle, d.h. sie gestatten es Ihnen, Anforderungen an ASP-Dateien zu senden, ohne dabei Umleitungen zu verwenden, die fröhlich zwischen Server und Client hin und her pendeln. Zwar gab es die so genannte Fehlerbehandlung bereits in früheren Versionen, doch verfügt ASP 3.0 über eine neue Methode namens Server.GetLastError, die eine Beschreibung des Fehlers und die Zeilennummer zurückgibt, die den Fehler
Kapitel 16 • Active Server Pages
347
enthält. Ferner ist ASP 3.0 auch in der Lage, Dateien mit der Erweiterung .asp zu verarbeiten, die keine serverseitigen Skripts enthalten. Dies ist für Administratoren und Entwickler ein unschätzbarer Vorteil, denn nun muss die Website nicht mehr nach Dateien durchsucht werden, bei denen aufgrund eines nachträglichen Hinzufügens von Skripts eine Umbenennung vonnöten ist; jetzt können einfach alle Dateien mit der Endung .asp versehen werden. Die XML-Integration erleichtert das Hosting solcher Dokumententypen auf dem Server und die Verarbeitung durch XML-Parser (wie der Internet Explorer 4.0 oder höher). Sie müssen zwar bedenken, dass auch heute noch Browser verwendet werden, die XML nicht unterstützen, aber da die Akzeptanz von XML mit hohem Tempo immer weiter ansteigt, können sich die anderen Browserhersteller einer Implementation von XML bei den nächsten Updates wohl nicht mehr verschließen. Die ASP-Komponente Browser Capabilities enthält eine neue Funktion, die es ermöglicht, die Funktionalität eines Browsers einem Cookie zu entnehmen – so können Sie Ihre Anwendungen entsprechend einstellen. Außerdem optimiert sich ASP selbst, denn es kann erkennen, wenn Anforderungen – auch durch externe Auslöser – blockiert wurden, und dann automatisch mehr Threads zur Ausführung zusätzlicher Anforderungen und zur Fortsetzung der Bearbeitung bereitstellen. Und bei einer Überlastung der CPU kann ASP die Anzahl der Threads auch selbstständig wieder herunterfahren. Eines der Merkmale, die Ihre Entwickler schätzen werden, ist die Verwendung der Skriptverschlüsselung. Früher mussten sich Entwickler Sorgen machen, dass der Benutzer das Skript und dessen Logik betrachten könnte; auch wenn dies nicht alle Skripts betrifft. So gibt es doch einige Unternehmen, die proprietäre Prozeduren verwenden, und wenn Sie solche Skripts einsetzen, dann wünschen Sie ganz sicher nicht, dass sich jemand den Code einfach so ansehen kann. Die neue ASP-Version gestattet deswegen eine Verschlüsselung von Skripts, so dass diese als sinnloser und unleserlicher ASCII-Text erscheinen. Beide Skriptmodule – VBScript und JScript 5.0 – können diese Kodierung nebenbei ausführen und die Skripts dann trotzdem normal ausführen. Wenn die Entwickler in Ihrem Unternehmen bereits ASP-Seiten in früheren Versionen entwickelt haben, dann werden die nächsten Absätze für diese von besonderem Interesse sein, denn sie enthalten Informationen über einige wichtige Änderungen, die bei der neuen Version von ASP vorgenommen wurden. Bei IIS 4.0 war die Pufferung von ASP-Inhalten standardmäßig nicht aktiviert, bei IIS 5.0 hingegen ist sie es. Dies bedeutet, dass die Ergebnisse eines ASPSkripts nicht vor Ende der Verarbeitung an den Client gesendet wurden. Sie können diese Funktion mit einem Skript abschalten oder aber die Inhalte jederzeit per Skript mit Hilfe der Methode Response.Flush an den Client senden. Mittels der Methode IsClientConnected kann IIS 5.0 vor Sendung von Inhalten feststellen, ob der Browser überhaupt noch verbunden ist. Unter IIS 4.0 mussten
348
ASP-Seiten erstellen
zunächst Inhalte an den Browser gesendet werden, bevor die korrekten Informationen mit der Methode Response.IsClientConnected ermittelt werden konnten. Ferner verwendet ASP unter IIS 5.0 bei der Verarbeitung von #include-Dateien erweiterte Sicherheitseinstellungen, denn IIS 5.0 wendet bei der Abarbeitung solcher Dateien die Anmeldeinformationen des physikalischen Pfades an; IIS 4.0 tat dies nicht. Wenn eine Anforderung mit einem Parameter gesendet wird, geht IIS 5.0 mit Standarddateien anders um als IIS 4.0. Wenn eine URL-Anforderung wie etwa http://www.gkcomput.com/?newuser=true an eine ältere IIS-Version gestellt wurde, dann wurde die Anforderung oder URL an die Datei default.htm verwiesen, denn Dateien vom Typ .asp waren noch nicht spezifiziert. IIS 5.0 hingegen leitet alle Anforderungen jederzeit an die ASP-Standarddatei weiter. Die Einträge ProcessorThreadMax und ErrorsToNTLog wurden bei IIS 5.0 aus der Registrierdatenbank in die Metabasis verschoben.
16.1
ASP-Seiten erstellen Bevor Sie ASP-Seiten erstellen, müssen Sie eine Skriptsprache wählen. ASP kann sowohl VBScript als auch JScript direkt verarbeiten, aber Sie können auch Skriptmodule für andere Sprachen hinzufügen, etwa Rexx, Perl oder Python. Allerdings: Warum sollten Sie diese Skriptsprachen verwenden, wenn IIS bereits zwei sehr leistungsfähige Sprachen beinhaltet? Standardmäßig verwendet IIS 5.0 VBScript, aber Sie können auch eine andere Standardsprache selektieren oder auf Ihren ASP-Seiten eine Mischung beider Ansätze verfolgen. Um die Standardsprache einzustellen, öffnen Sie den Internetdienste-Manager. Klicken Sie dann mit der rechten Maustaste auf das Serversymbol und wählen Sie EIGENSCHAFTEN aus dem Kontextmenü (alternativ können Sie das Serversymbol selektieren und dann den Eintrag EIGENSCHAFTEN aus dem Menü VORGANG anwählen). Nun wird das Dialogfeld EIGENSCHAFTEN (Abbildung 16.1) aufgerufen. Klicken Sie im Abschnitt HAUPTEIGENSCHAFTEN auf die Schaltfläche BEARBEIum das Dialogfeld HAUPTEIGENSCHAFTEN DES WWW-DIENSTES zu öffnen. Aktivieren Sie dort die Registerkarte BASISVERZEICHNIS.
TEN,
Klicken Sie nun im Abschnitt ANWENDUNGSEINSTELLUNG auf die Schaltfläche KONFIGURATION, um das Dialogfeld ANWENDUNGSKONFIGURATION aufzurufen (Abbildung 16.2). Aktivieren Sie die Registerkarte ANWENDUNGSOPTIONEN. Wie Sie der Abbildung 16.2 entnehmen können, ist die Standardsprache auf meinem Server VBScript. Das liegt zum einen daran, dass dies die voreingestellte Standardsprache ist, zum anderen daran, dass ich als Visual Basic-Entwickler VBScript besser kenne als JScript. Wählen Sie die Sprache Ihrer Wahl (oder der Wahl Ihrer Firmenentwickler).
Kapitel 16 • Active Server Pages
349
Abb. 16.1: Das Dialogfeld EIGENSCHAFTEN VON *COMPUTER zeigt die Haupteigenschaften für den gesamten IIS-Server an
Abb. 16.2: Auf der Registerkarte ANWENDUNGSOPTIONEN des Dialogfelds ANWENDUNGSKONFIGURATION wird die ASP-Standardsprache angezeigt
350
ASP-Seiten erstellen
Wenn Sie Ihre Einstellung vorgenommen haben, klicken Sie auf die diversen OKSchaltflächen, um die Dialogfelder zu schließen und die Änderungen zu übernehmen. Sie können nun mit der Entwicklung von ASP-Seiten in der Sprache Ihrer Wahl beginnen. Glauben Sie es mir oder nicht: Wenn Sie eine statische HTML-Datei, die eine der Dateikennungen .htm oder .html hat, mit der Endung .asp versehen, haben Sie eine ASP-Datei erstellt. Natürlich erfährt die Seite durch die reine Umbenennung noch keine neue Funktionalität – Sie müssen zu diesem Zweck Skriptbefehle integrieren. Das Listing 16.1 zeigt eine sehr einfach gehaltene ASP-Seite, die die Systemzeit des Servers verwendet, um eine tageszeitbezogene Meldung anzuzeigen. <%@ LANGUAGE = "VBScript" %> <TITLE>Serverzeit GK Computer Consulting Hinweise zu Transaktionen <% Dim timeframe If Time < #12:00PM# Then timeframe = "Morgen" ElseIf Time >= #12:00PM# AND Time < #5:00PM# Then timeframe = "Nachmittag" Else timeframe = "Abend" End If %> Willkommen auf unserer Website! Hier ist es zur Zeit <% =timeframe %>. Alle von Ihnen heute auf unserer Zeit durchgeführten Transaktionen erhalten unseren lokalen Zeitstempel. Dieser lautet im Moment <% =Now() %> Listing 16.1: time.asp
Geben Sie diesen Code in Ihren bevorzugten HTML-Editor ein und speichern Sie ihn unter time.asp im Verzeichnis Ihres Webservers. Sie können nun vom Server oder einem anderen Computer aus über das Netzwerk darauf zugreifen. Je nach der Systemzeit auf dem Server werden Sie dann mit einer anderen Meldung begrüßt. Spielen Sie ein wenig mit den Zeitangaben herum, um sicherzustellen, dass die korrekte Grußformel angezeigt wird.
Kapitel 16 • Active Server Pages
351
Das Erste, was Sie tun müssen, damit Ihre ASP-Seite funktioniert, ist die Platzierung des Skriptsprachen-Tags ganz oben auf der HTML-Seite – und zwar vor allen HTML-Tags. Die Syntax hierzu sieht wie folgt aus: <%@ LANGUAGE="VBScript" %>
Sie werden außerdem bereits gemerkt haben, dass im Code alle Skriptbefehle zwischen den Trennzeichen <% und %> stehen müssen, damit der Browser nicht den Skripttext an den Client sendet. Abbildung 16.3 zeigt, was passiert, wenn das einführende Tag <% im obigen Listing weggelassen wird.
Abb. 16.3: Der Internet Explorer zeigt den vollständigen Text meines VBScriptCodes im Browserfenster an
Werden die Trennzeichen jedoch korrekt gesetzt, dann erscheint das in Abbildung 16.4 gezeigte Fenster. Aus zwei Gründen sollten Sie die Trennzeichen nicht vergessen: Erstens funktioniert Ihr Code nicht, und Ihren Clients wird der gewünschte Text nicht angezeigt. Zweitens wird statt dessen allen Clients Ihr Quellcode gezeigt – dies wäre insbesondere dann nicht wünschenswert, wenn es sich hierbei um proprietäre Daten handeln würde.
352
ASP-Seiten erstellen
Abb. 16.4: Der Internet Explorer zeigt die ASP-Seite wie gewünscht, d.h. der Code wird korrekt ausgeführt
Sie haben im Codebeispiel gesehen, dass Skripttext und HTML-Befehle in getrennten Bereichen der Seite verwendet werden. Wenn Sie wollen, können Sie aber auch die Ausgabe von HTML-Text und -Tags innerhalb des Skriptbereichs konfigurieren. Hierfür zeigt Listing 16.2 ein Beispiel. <%@ LANGUAGE = "VBScript" %>
<TITLE>HTML-Ausgabe innerhalb des Skripts Ausgabe von Text aus dem Skript heraus H2> <% Response.Write "" Response.Write "Dieser Text hat die folgende Auszeichnung: Script, Fettdruck, 14-Punkt. " Response.Write "Er wird aus einem Skript heraus an den Client gesendet" Response.Write "Das Datum auf dem Server ist der " & Date()
Kapitel 16 • Active Server Pages
353
%> Listing 16.2: HTML_Output.asp
Werfen wir nun einen Blick auf die Unterschiede zwischen Ihrem Code und dem, was ein Benutzer zu sehen bekommt, der die Quelltextansicht wählt. Laden Sie zu diesem Zweck die gerade erstellte Seite in Ihren Browser. Wählen Sie nun beispielsweise im Internet Explorer den Eintrag QUELLTEXT ANZEIGEN aus dem Menü ANSICHT. Vergleichen Sie den angezeigten Quelltext mit Ihrem Code, so werden Sie feststellen, dass der komplette Skriptcode unter den Tisch gefallen ist – angezeigt wird nur der HTML-Code. So agieren ASP-Dateien bei Verwendung der Trennzeichen <%und %>. Code zwischen diesen Tags wird nicht angezeigt, wenn der Code auf dem Server ausgeführt wird. Setzen Sie den Code statt dessen zwischen die Tags <SCRIPT> und , so wird er auf dem Client ausgeführt und dem Benutzer auch angezeigt, wenn er ANSICHT/QUELLTEXT ANZEIGEN wählt. Hinweis Die Tatsache, dass ein Benutzer den Code Ihrer Seite nicht betrachten kann, bedeutet nicht, dass er eine Seite nicht als ganze Datei von Ihrem Server herunterladen und betrachten kann. Es ist lediglich unmöglich, die Option DATEI/SPEICHERN zu wählen und den Code dann zu betrachten. Lädt der Benutzer jedoch die gesamte Datei herunter, dann kann er den Code natürlich sehen. Nachdem wir nun die grundlegenden Strukturen von ASP-Seiten betrachtet haben, enthalten die folgenden Abschnitte eine kurze Einführung mit allen Informationen, die Sie benötigen, um effizient mit ASP-Seiten arbeiten zu können.
16.2
Skriptsprachen Mit IIS 5.0 können Sie eine beliebige Skriptsprache verwenden, sofern das entsprechende Skriptmodul auf dem Server installiert ist. Alles in allem unterscheiden sich Skriptsprachen von einfachen Programmiersprachen wie C oder C++ und sind eher wie Visual Basic oder Java, denn Skriptsprachen werden mit einem Interpreter bearbeitet, der jede Zeile des Codes lesen und dann ausführen muss. Trotzdem können Skripts nicht zu einer ausführbaren Binärdatei kompiliert werden. Die beiden Sprachen, die als Bestandteil von IIS 5.0 ausgeliefert werden, sind VBScript und JScript. VBScript ist ein Subset der Programmiersprache Visual Basic. Wenn in Ihrem Unternehmen Visual-Basic-Entwickler arbeiten, dann kennen diese bereits die Codekonstrukte für VBScript und können praktisch sofort
354
Skriptsprachen
mit der Erstellung von ASP-Seiten beginnen. JScript ist Microsofts Version von JavaScript und ist recht eng an die Syntax und die Struktur der Programmiersprache Java angelehnt. Alle Codebeispiele in diesem Buch sind in VBScript geschrieben – aus drei Gründen: Erstens ist es die voreingestellte Standardsprache für IIS, zweiten kenne ich VBScript besser als JScript, und drittens ist VBScript wesentlich einfacher zu handhaben als JScript oder andere Sprachen wie Perl oder Rexx. Wir haben im ersten Teil dieses Kapitels bereits gesehen, wie Sie die Standardsprache auf dem Server festlegen. Sie können auch für eine ASP-Seite eine voreingestellte Sprache festlegen, indem Sie eine entsprechende Anweisung am Seitenanfang platzieren. Das kann dann etwa so aussehen: <%@ LANGUAGE=skriptsprache%>
Ersetzen Sie skriptsprache durch den Namen der gewählten Sprache – etwa VBScript oder JScript. Hinweis Bei der Ausführung von VBScript-Code in ASP-Dateien sind ein paar Besonderheiten zu beachten, mit denen sich Ihre Entwickler vertraut machen sollten. Beispielsweise können Sie die Funktionen InputBox und MsgBox in ASP-Dateien nicht verwenden, da eine ASP-Datei nicht über eine Benutzeroberfläche verfügt. Wenn Sie aus Übersichtlichkeitsgründen Anmerkungen in Ihren Code einfügen wollen, müssen Sie auch die verschiedenen Möglichkeiten der Auskommentierung in den unterschiedlichen Sprachen kennen. VBScript verwendet – wie Visual Basic – den Apostroph: <% ' Schreibt eine Zeile mit dem aktuellen Datum auf den Bildschirm Response.Write "Heute ist der " & Date() %>
Hier wird der Apostroph (') verwendet, um vor dem Code eine Kommentarzeile einzufügen; in der Kommentarzeile wird erläutert, was der Code bezweckt. Bei JScript wird ein doppelter Schrägstrich (//) verwendet, wie man es von Java und C++ her kennt. <% // Zeile mit aktuellem Datum auf den Bildschirm schreiben var x x = new Date()
Kapitel 16 • Active Server Pages
355
Response.Write (x.ToString()) %>
Wenn der Server den Code verarbeitet, werden die Kommentare aufgrund der Trennzeichen als solche erkannt und nicht verarbeitet. Ein weiterer wichtiger Punkt, der bei der Arbeit mit VBScript und JScript zu beachten ist, ist die Tatsache, dass es sich in beiden Fällen um »typenlose« Sprachen handelt, d.h. von Ihnen definierte Variablen werden keinem bestimmten Datentyp zugeordnet. Wenn man bei Visual Basic mit einer Zeichenkette arbeitet, muss man eine Variable vom Typ String definieren; das sieht dann etwa so aus: Dim strNewString As String
Dadurch ist gewährleistet, dass dieser Variable nur Zeichendaten zugewiesen werden können. Bei den beiden hier beschriebenen Skriptsprachen sind alle Variablen vom Typ Variant. Diesen Datentyp werden wir im folgenden Abschnitt besprechen.
16.2.1 Variablen und Konstanten Falls Ihnen der Begriff »Variable« nicht geläufig ist: Er bezeichnet den Namen eines Speicherbereichs, der für die Speicherung von Daten reserviert ist, die unter diesem Namen abgelegt werden. Auf diese Weise können Sie Daten aus dem Speicher einfach über ihren Namen abrufen – und der ist leichter zu merken als eine Speicheradresse. Da der Name, der als Verweis auf Daten dient, eine Variable ist, können Sie einem Namen zu unterschiedlichen Zeiten auch verschiedene Werte zuweisen. Nehmen wir beispielsweise einmal an, dass Sie einen Variablennamen erstellen wollen, der einen ganzzahligen Wert aufnehmen soll, welcher zur Ausführung einer Schleife in Ihrem Code benötigt wird. Der Name wird als Dim intCounter
deklariert. In Ihrem Schleifencode könnten Sie die Variable dann etwa so einsetzen: For intCounter = 1 to 10 Hier passiert irgendwas in Ihrem Code Next
Dies ist eine so genannte For-Schleife. Der Wert der Variable intCounter wird ebenso geändert wie die Daten, die im für diese Variable reservierten Speicherbereich liegen, und zwar aufsteigend von 1 bis 10 mit einer Schrittweite von 1.
356
Skriptsprachen
Ein anderer Datentyp ist die »Konstante«. Der Unterschied zur Variablen besteht darin, dass einer Konstante genau einmal ein Wert zugewiesen wird, der anschließend nicht mehr geändert wird: Const pi = 3.14159265
Diese Zuweisung besagt, dass dem Datennamen pi der Wert 3,14159265 zugewiesen wird; diese Zuweisung kann durch den Code nicht mehr geändert werden. Wenn Sie einen Datenspeicher als Konstante definieren, müssen Sie ihn gleichzeitig auch mit einem Wert initialisieren, da dies im Nachhinein (d.h. während der Ausführung des Codes) ja nicht mehr möglich ist. VBScript setzt keine Definition einer Variablen vor deren Verwendung voraus. Die explizite Deklaration einer Variablen hat sich jedoch als gängige Programmiererpraxis erwiesen, und Sie können sogar eine VBScript-Funktion nutzen, die Sie dazu zwingt, sich diese Verhaltensweise anzugewöhnen. Wenn Sie zu Beginn Ihrer ASP-Dateien eine Anweisung wie Option Explicit einsetzen, wird sich VBScript beschweren, wann immer es auf eine nicht deklarierte Variable stößt. Dadurch wird dem Compiler mitgeteilt, dass jede Variable vor ihrer Verwendung explizit deklariert werden muss. Die Anweisung Option Explicit folgt ggf. auf ASP-Anweisungen wie etwa #include, steht aber immer vor HTML- oder Skriptcode. Variablen deklarieren Verwenden Sie eine der folgenden vier Anweisungen, um eine Variable in VBScript zu deklarieren: •
Dim. Deklariert eine Variable als normale Variable und ist die am häufigsten verwendete Anweisung. Beispiel: Dim intCounter.
•
Public. Macht eine Variable mehreren Funktionen oder Prozeduren verfügbar (»publiziert« die Variable). Beispiel: Public strName.
•
Private. Reduziert die Verwendungsmöglichkeiten einer Variable auf die Prozedur oder Funktion, in der sie deklariert wird (»privatisiert« die Variable). Beispiel: Private m_lngPi.
•
ReDim. Wird bei der Arbeit mit Arrays benutzt. Wenn Sie ein bereits vorhandenes Array neu deklarieren wollen und hierzu den Befehl ReDim verwenden, dann werden die ursprünglichen Daten gelöscht, das Array neu formatiert und dann mit den neuen Daten versehen. Beispiel: ReDim arDice(9) – diese Anweisung konfiguriert das Array arDice mit zehn Elementen neu.
In der Liste der Anweisungen erwähnte ich die Möglichkeit, Variablen zu publizieren bzw. zu privatisieren. Diese Begriffe beziehen sich auf den Wirkungsbereich einer Variable, d.h. auf den Bereich, von dem aus auf die Variable zugegriffen werden kann und innerhalb dessen sie existiert.
Kapitel 16 • Active Server Pages
357
Eine normale Variable ist nur innerhalb der Funktion sichtbar, für die sie deklariert wurde; keine andere Funktion kann darauf zugreifen. Eine Variable gleichen Namens kann auf diese Weise in einer anderen Funktion vorhanden sein, ohne dass die beiden einander stören. Wenn die Funktion oder Prozedur beendet ist, ist die Variable nicht mehr gültig und wird aus dem Wirkungsbereich entfernt, d.h. sie existiert nicht mehr. Die Daten sind zwar noch im Speicher vorhanden, aber der Speicherbereich ist nicht mehr reserviert und kann von einer anderen Variablen (oder sogar einer anderen Anwendung) beansprucht werden. Es ist wichtig, sich diese Sachverhalte klarzumachen, denn häufig wollen Sie den aktuellen Zustand einer Anwendung auf Ihrem Server beibehalten. Die einzige Möglichkeit, dies zu tun, besteht darin, Ihre Variablen für die gesamte Anwendung sicht- und verfügbar zu machen. Zu diesem Zweck werden globale Variablen verwendet, die mit dem Bereich Session (Sitzung) oder Application (Anwendung) deklariert werden. Der Bereich Session macht Ihre Variable für alle Seiten einer Anwendung verfügbar, die von einem Benutzer angefordert werden; der Bereich Application macht sie für alle Seiten der Anwendung verfügbar, die von beliebigen Benutzern angefordert werden. Um eine Variable mit diesen Bereichstypen zu deklarieren, verwenden Sie die Objekte Session bzw. Application. Wenn Sie beispielsweise eine Variable mit dem Bereich Session deklarieren wollen – etwa für den Vornamen eines Benutzers –, dann verwenden Sie folgenden Code: <% Session("Vname") = "Gerry" %>
Sie können diese Variable nun über alle Seiten hinweg, die innerhalb einer Sitzung verwendet werden, aufrufen und verwenden, indem Sie die folgende Zeile einfach an der Stelle Ihrer Seite einfügen, an der Sie den Vornamen verwenden wollen: <%= Session("Vname") %>
Die Anwendung des Bereichs Application verläuft analog – ersetzen Sie in den Codeausschnitten lediglich Session durch Application. Ich kann Ihnen hier leider kein vollständiges ASP-Lehrbuch bieten, sondern möchte lediglich ein paar Hintergrundinformationen bereitstellen, die Ihnen zeigen, wie ASP grundlegend funktioniert, so dass Sie es in Ihrer IIS-Umgebung einsetzen können.
16.2.2 Clientseitige Skriptinteraktion Wenn Sie wollen, können Sie clientseitiges und serverseitiges Skripting auf ein und derselben Seite mischen. Eine Warnung sei allerdings in diesem Fall ausgesprochen: Nicht alle Browser unterstützen alle Skriptsprachen. Netscape beispielsweise unterstützt VBScript nicht, deswegen können Sie diese Skriptsprache nicht für clientseitigen Code verwenden, wenn Sie kompatibel mit allen Browsern sein wollen.
358
Skriptsprachen
Die neueste Browsergeneration unterstützt mehr oder minder durchgehend JavaApplets, JavaScript und JScript – hier sind Sie, was clientseitiges Skripting angeht, in der Regel auf der sicheren Seite. Listing 16.3 demonstriert die Anwendung dieser Technik. <%@ LANGUAGE = "VBScript" %>
<TITLE>Skripts mischen <% Dim tmTime, strServerName, strServerSoftware, intGreeting tmTime = Time() strServerName = Request.ServerVariables("SERVER_NAME") strServerSoftware = Request.ServerVariables("SERVER_SOFTWARE") 'Zufallszahl erzeugen. Randomize intGreeting = int(rnd * 3) %> <SCRIPT LANGUAGE="JScript"> ) { case 0: msg = "Willkommen zum Webserver <%= strServerName%> unter der Software <%= strServerSoftware %>." break case 1: msg = "Dies ist mein Webserver <%= strServerName%>. Die Zeit auf dem Server ist <%= tmTime %>." break case 2: msg = "Auf diesem Computer wird <%= strServerSoftware %> ausgeführt." break } document.write(msg) } --> Listing 16.3: mixscript.asp
Kapitel 16 • Active Server Pages
359
Dieser Code erstellt eine Seite, die Systemzeit, Namen und Softwareversion des Servers holt und diese Parameter dann an eine JScript-Funktion weitergibt, die auf dem Computer des Clients ausgeführt wird. Ein Vorteil dieser Technik besteht darin, dass die Bearbeitung der JScript-Funktionen zum Client verschoben und die Serverbelastung so verringert wird. Eine Menge kleiner Skripts wie dieses kann die Leistung Ihres Servers verbessern. Verstehen Sie mich nicht falsch: Ich will damit nicht sagen, dass Sie den Clientcomputern mit Skripts überlasten sollen, aber je mehr Verarbeitungsvorgänge Sie vom Server entfernen, desto besser und schneller werden die verbleibenden Prozesse bearbeitet.
16.3
Prozeduren In der Dokumentation zu IIS 5.0 heißt es, eine Prozedur ist »eine Gruppe von Skriptbefehlen, die eine bestimmte Aufgabe ausführt und einen Wert zurückgeben kann«. Nach meinen Erfahrungen mit Programmiersprachen ist eine Prozedur (etwa eine Subprozedur) in der Tat eine Gruppe von Befehlen oder Anweisungen, die eine bestimmte Aufgabe ausführen; wenn allerdings ein Wert zurückgegeben wird, dann möchte ich dieses doch eher als »Funktion« bezeichnen – auf der Basis dieser Definitionen lässt sich eine Prozedur von einer Funktion unterscheiden. Entsprechend der typischen Wirkungsbereiche von Funktionen und Prozeduren, wie sie in anderen Entwicklungstools verwendet werden, können Sie ihre Prozedur/Funktion auf der Seite schreiben, die diese auch verwendet. Alternativ können Sie allgemeine Prozeduren/Funktionen schreiben, die sie als allgemeine Datei speichern, und dann die Anweisung #include verwenden, um Datei und Funktionen in die Seite zu integrieren. Auf diese Weise können Sie verhindern, dass Sie eine Prozedur oder Funktion jedes Mal neu schreiben müssen, wenn Sie sie benötigen. Prozeduren werden so geschrieben, dass sie entweder auf dem Server oder auf dem Client ausgeführt werden. Die meisten Skriptbefehle, die ich verwende, stehen normalerweise zwischen den Trennzeichen <% und %>; Funktionen und Prozeduren werden hingegen in der Regel zwischen den Tags <SCRIPT> und stehen. In diesem Fall wird der Code auf dem Clientcomputer ausgeführt. Wenn Ihr Code in VBScript verfasst ist, dann wird jeder Browser, der nicht von Microsoft stammt, damit seine Probleme haben. Damit Ihre Funktionen und Prozeduren ausschließlich auf dem Server ausgeführt werden, können Sie eine zusätzliche Anweisung im eröffnenden <SCRIPT>-Tag einfügen: <SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
360
Prozeduren
Dadurch wird IIS mitgeteilt, dass der Code zwischen diesen beiden <SCRIPT>Tags auf dem Server ausgeführt werden muss. Warnung Stellen Sie immer sicher, dass all Ihre Funktionen und Prozeduren vollständig von den <SCRIPT>-Tags eingeschlossen sind. Ferner sollten Sie innerhalb eines Satzes von <SCRIPT>-Tags keine Skriptbefehle verwenden, die nicht Bestandteil der Prozedur sind; andernfalls kann das Verhalten des Codes unvorhersagbar werden. Wenn auf Ihrer Seite eine Funktion oder Prozedur verwendet werden soll, dann müssen Sie diese Funktion/Prozedur aufrufen. Hierzu gibt es verschiedene Wege – je nachdem, um was für eine Prozedur es sich handelt und welche Skriptsprache Sie verwendet haben. Wenn Sie eine JScript-Routine aufrufen, müssen Sie an das Ende des Funktionsnamens Klammern anhängen. Der folgende Codeausschnitt zeigt die korrekte Syntax für den Aufruf einer JScript-Funktion namens RunMe: <TITLE> <% RunMe() %>
Bei VBScript können Sie die Klammern weglassen, sofern Sie an die aufzurufende Funktion oder Prozedur keine Parameter übergeben müssen. Die Parameter müssen in jedem Fall zwischen den Klammern stehen – egal, ob Sie eine VBScript- oder eine JScript-Prozedur aufrufen. Der folgende Ausschnitt zeigt, wie es geht: <TITLE> <% Summe(10, 25) %>
Diese Prozedur übergibt die beiden ganzzahligen Werte 10 und 25 an eine Prozedur namens Summe. Dem Namen der Prozedur können Sie entnehmen, was diese mit den beiden Parameterwerten machen soll.
Kapitel 16 • Active Server Pages
16.4
361
Auflistungen Wenn Sie zwecks Speicherung zusammengehörender Daten bereits mit Arrays gearbeitet haben, dann werden Sie das Konzept der »Auflistungen« wahrscheinlich zu schätzen wissen. Auflistungen ähneln Arrays dahingehend, dass sie zusammengehörige Elemente als Gruppen speichern. Sie können Zahlen, Zeichen, Zeichenketten und Objekte in Auflistungen ablegen. Auf einzelne Daten einer Auflistung greifen Sie – wie bei Arrays auch – über Indexwerte zu; alternativ können Sie den eindeutigen Zeichenschlüssel verwenden. Natürlich lässt sich eine Auflistung auch mittels einer Schleife durcharbeiten. Der Vorteil, den eine Auflistung gegenüber einem Array hat, besteht darin, dass sie sich automatisch vergrößert oder verkleinert, wann immer Daten hinzugefügt oder entfernt werden; eine manuelle Neudimensionierung ist nicht notwendig. Ein gutes Beispiel hierfür ist die Auflistung Contents des Objekts Session. Sie können mit dieser Auflistung Daten des Sitzungsstatus speichern, so dass Sie später wieder auf jeden der zusammengefassten Werte zugreifen können, wenn Sie ihn für eine bestimmte Seite oder Funktion benötigen. Betrachten Sie einmal den folgenden Code-Ausschnitt: <% Session.Contents("Vname") = "Gerry" Session.Contents("Nname") = "O'Brien" Session.Contents("TEL") = "0134-12345" %>
Wenn ich auf eines der Datenelemente in dieser Auflistung zugreifen will, so kann ich das entweder mit dem Schlüsselzeichen oder dem Index. Die folgenden beiden Zeilen zeigen, wie der Nachname aus der Auflistung extrahiert wird: <%= Session.Contents("Nname") %> <%= Session.Contents(2) %>
Beide Zeilen geben den Wert »O'Brien« zurück. Der Indexwert ist deswegen »2« und nicht »1«, weil die Indizierung einer Auflistung mit 1 beginnt (und nicht wie bei Arrays mit 0).
16.4.1 Anzahl der Elemente in einer Auflistung bestimmen Vielleicht fragen Sie sich nun: »Okay, aber wie finde ich heraus, wie viele Elemente in einer Auflistung vorhanden sind?« Bei einem Array wissen Sie dies in der Regel, denn Arrays werden normalerweise mit der korrekten Anzahl der Elemente dimensioniert. Da sich eine Auflistung aber an den Bedarf an Elementen anpasst, kann sich die Gesamtzahl jederzeit ändern.
362
Verarbeitung von Benutzereingaben
Der leichteste Weg festzustellen, wie viele Elemente in der Auflistung vorhanden sind, ist das Abarbeiten der Auflistung. Mittels einer Schleife können Sie, wie in Listing 16.4 gezeigt, den Inhalt der Auflistung ausdrucken. <% Dim strItem For Each strItem in Session.Contents Response.Write Session.Contents(strItem) & " " Next %> Listing 16.4: Abarbeiten einer Auflistung
Dieser Code verwendet eine For…Each-Schleife, um die Auflistung durchzuarbeiten, und druckt den Wert für jedes (engl. »for each«) Element der Auflistung aus. Es spielt dabei keine Rolle, wie groß oder klein die Auflistung ist; die Schleife stoppt die Abarbeitung erst, nachdem auf das letzte Element zugegriffen wurde. Alternativ können Sie auch eine For…Next-Schleife verwenden. In diesem Fall sähe der Code wie folgt aus: <% Dim intCounter For intCounter = 1 TO Session.Contents.Count Response.Write Session.Contents(intCounter) & " " Next %>
Dieser Code tut das gleiche wie die vorhergehende For…Each-Schleife – Sie können die gewünschte Vorgehensweise also frei wählen. Hinweis Wenn Sie VB-Programmierer und bereits mit der Bearbeitung von Auflistungen in dieser Sprache vertraut sind, dann müssen Sie nur eine winzige Kleinigkeit in Zusammenhang mit Auflistungen in ASP beachten: Die Methoden Item, Count, Remove und RemoveAll werden allesamt unterstützt, nicht jedoch die Methode Add. Sie müssen Ihre Auflistungen also bei der Planung bereits einschätzen können.
16.5
Verarbeitung von Benutzereingaben Vom Administratorenstandpunkt her ist die Verarbeitung von Benutzereingaben wahrscheinlich eine der schönsten Eigenschaften von ASP. Sie können die ASPFunktionen zur Formularverarbeitung nutzen, um Benutzerdaten zu ermitteln und
Kapitel 16 • Active Server Pages
363
zu bewerten. Formulare sind seit einiger Zeit Standard bei der Ermittlung von Benutzerdaten auf HTML-Seiten. Sie können ASP zur Bewertung von Benutzerdaten verwenden, die eine ASP-Datei von einer HTML-Datei oder einer anderen ASP-Datei empfangen hat. Ferner können Sie mit ASP ein Formular erstellen und die Daten in diesem Formular wieder an die ASP-Seite senden. Listing 16.5 erzeugt eine Beispielseite, die ein paar Eingabefelder für Benutzerdaten wie etwa den Vor- und den Nachnamen enthält. Listing 16.6 übergibt diese Daten an eine ASP-Datei, die sie weiterverarbeitet und mit einer Begrüßungsmeldung auf dem Bildschirm anzeigt. <TITLE>Abfrage der Formulardaten Geben Sie bitte Ihren Vor- und Nachnamen in die entsprechenden Felder ein und klicken Sie auf die Schaltfläche 'Senden'. Listing 16.5: inputuser.htm <%@ LANGUAGE="VBScript" %> <TITLE>userinfo.asp UserInfo.asp Willkommen, <% =Request.QueryString("Vorname") & " " %> <% =Request.QueryString("Nachname") %> Listing 16.6: userinfo.asp
Listing 16.5 fragt die Benutzerdaten ab. Es handelt sich dabei um eine einfache kleine HTML-Datei mit einem Formular. Die im Formularabschnitt verwendete Methode ist GET, der Vorgang wird in der Datei userinfo.asp aufgelistet. Das bedeutet, dass IIS die Daten aus den Formularfeldern holt und sie in den Variablen Vorname und Nachname ablegt, die im Formular durch INPUT NAME deklariert werden. Die Daten werden nachfolgend als URL an die Datei userinfo.asp übergeben – das sieht dann etwa so aus:
364
Komponenten und Objekte
http://localhost/userinfo.asp?Vorname=Gerry&Nachname=O%27Brien&UserStatus=New
Die Seite userinfo.asp extrahiert die Daten mit der Methode Request.QueryString und zeigt sie dann auf der Seite an. Die Daten lassen sich natürlich auch an eine Datenbank oder eine Textdatei senden, die man später noch betrachten kann. Dieses Beispiel ist nicht besonders ausführlich, aber es gibt Ihnen eine Ahnung von den Möglichkeiten, die ASP für den Zugriff auf Benutzerdaten bereitstellt. Solche Daten lassen sich beispielsweise in der Werbeabteilung verwenden, um potentielle Kunden zu kontaktieren; auch andere Arten der internen Verwendung sind denkbar. Einer der Hauptvorteile bei der Verarbeitung von Benutzereingaben in ein Formular ist die Möglichkeit der Verwendung von Bewertungsfunktionen, um festzustellen, ob die eingegebenen Daten gültig sind. Sie können diese Funktionen etwa benutzen, wenn für den Aufruf einer Eingangsseite in einen eingeschränkten Bereich die Eingabe eines Benutzernamens und eines Kennworts notwendig ist. Benutzername und Kennwort könnten dann an eine andere ASP-Seite geschickt werden, die ihrerseits eine Datenbank abfragen und die Benutzereingaben verifizieren könnte. Sind die Daten gültig, dann hat der Benutzer Zugriff auf die entsprechenden Webseiten, andernfalls könnte die ASP-Seite eine Fehlermeldung generieren, die dem Client angezeigt wird. Die Möglichkeiten der Zeitersparnis sind riesig, denn Seiten können dynamisch erstellt werden – Sie müssen nie wieder viele Seiten auf dem Server speichern, die dort eine Menge Platz brauchen und deren Erstellung stundenlang dauert.
16.6
Komponenten und Objekte Praktisch die gesamte Softwareentwicklung hat sich der objektorientierten Programmierung zugewandt. Die Idee hinter der objektorientierten Programmierung besteht darin, Objekte zu erstellen, die Objekten im richtigen Leben nachempfunden sind, und dann die echten Objekte im Code so gut wie möglich nachzustellen. Die Erstellung von Objekten bedingt die Erstellung einer Schnittstelle für das Objekt. Dabei muss es sich nicht unbedingt um eine grafische Oberfläche handeln, wie sie eine Windows-Anwendung hat; wir reden hier eher von einem Satz von Prozeduren, Eigenschaften und Methoden, die Programmierer frei verwenden und so das Objekt in ihren eigenen Projekten benutzen können. Microsoft benutzt dieses Konzept für seine COM-, COM+- und DCOM-Komponenten. Die COM-Komponenten sind »wiederverwendbare« Codestückchen, die einfach in eine Anwendung eingefügt werden – es besteht kein Grund, die Funktionalität dieser Komponenten von Grund auf neu zu erstellen. Ein gutes Beispiel hierfür ist das Anwendungspaket »Microsoft Office«. Bestandteil dieses Pakets ist VBA (Visual Basic für Applikationen), mit dem Sie das Soft-
Kapitel 16 • Active Server Pages
365
wareprodukt um Funktionen erweitern können, die noch nicht vorhanden sind. Wenn Sie mit VBA arbeiten, greifen Sie auf COM-Komponenten zu. Andere Softwareentwickler können eine von Office völlig getrennte Anwendung erstellen, dabei aber die Rechtschreibprüfung von Microsoft Word verwenden, sofern Word auf dem System installiert ist. Auch hier greifen Sie auf COMObjekte zu und arbeiten mit diesen. Der größte Vorteil von Komponenten besteht für Webentwickler darin, dass sich die Funktionalität einer Komponente aus einem Skript heraus aufrufen lässt. Das bedeutet, dass Sie eine COM-Komponente in einer beliebigen Programmiersprache erstellen (die Sprache muss COM-Komponenten natürlich unterstützen) und von Ihrem VBScript- oder JScript-Code aus auf die Komponente zugreifen können. Die Komponente ließe sich beispielsweise in C++ verfassen, was im Vergleich zu einem ASP-Skript eine bessere Optimierbarkeit erlauben würde. Sie können Ihre proprietären Prozeduren in COM-Komponenten einkapseln, wodurch diese transportabel würden. Das bedeutet auch, dass, wenn Sie Prozeduren ändern müssen, dies problemlos unter Beibehaltung der Zugriffsmechanismen tun können, ohne dass Sie vorhandenen Code ändern müssen, der auf die Prozeduren zugreift.
16.6.1 COM-Objekte in ASP benutzen Damit Sie eine COM-Komponente oder ein COM-Objekt in Ihrem Skript verwenden können, müssen Sie zunächst eine Instanz davon erstellen. Dies geschieht mit der folgenden Codezeile: <% Set adOne = Server.CreateObject("MSWC.AdRotator") %>
Diese Zeile erstellt eine Instanz der Komponente Ad Rotator, die Bestandteil von IIS 5.0 ist und in Kapitel 17 erläutert werden wird. Natürlich benötigen Sie nach der Erstellung eines Objekts auch eine Möglichkeit des Zugriffs auf seine Funktionalität. Jedes Objekt stellt Methoden zur Verfügung, die Sie in Ihrem Code aufrufen können. Diese Methoden dienen der Einstellung oder Prüfung der Objekteigenschaften oder der Ausführung bestimmter Aufgaben. Ein gutes Beispiel hierfür befindet sich in einem Code, den wir bereits früher verwendet haben. IIS verfügt über ein Objekt namens Response, welches Sie auf Ihrer ASP-Seite verwendet haben, um etwas in eine HTML-Seite zu schreiben, etwa so: <% Response.Write "Methode WRITE für das Objekt RESPONSE " %>
Die Methode Write bewirkt eine Anzeige des nachfolgenden HTML-Codes auf der Seite. Write ist eine der Methoden des Objekts Response, die Sie nicht extra erstellen müssen; Sie rufen die Methode einfach auf und übergeben die benötigten
366
Der Objektbereich
Parameter. Die Methode kümmert sich anschließend um den Rest, damit der eingegebene Text angezeigt wird. Im Skriptcode lassen sich auch die Eigenschaften eines Objekts einstellen. Das weiter oben instanzierte Objekt Ad Rotator hat drei Eigenschaften: Width (Breite), Height (Höhe) und Border (Rahmen). Sie können all diese Eigenschaften in Ihrem Code einstellen, so etwa die Breite: <% adOne.Width = 440 %>
Ich habe die Breite des Ad Rotator-Elements auf 440 Pixel gesetzt. Beachten Sie die Verwendung von adOne anstelle von MSWC.AdRotator. Ich habe nämlich eine Kopie des Objekts erstellt und diese als adOne bezeichnet. Die Eigenschaften von adOne als einer Instanz des Objekts lassen sich einstellen, ich kann jedoch nicht die Eigenschaften von MSWC.AdRotator setzen. Wie bereits erwähnt, können Sie COM-Komponenten und -Objekte zur Vereinfachung administrativer Aufgaben verwenden, indem Sie die benötigte Logik in diese Komponenten integrieren und den Code dann für viele Webanwendungen verfügbar machen – so brauchen Sie ihn nicht jedes Mal neu zu erstellen.
16.7
Der Objektbereich Bei der Arbeit mit Objekten müssen Sie den Bereich (engl. »scope«) eines Objekts beachten, d.h. seine »Existenz« für Funktionen und Skripts. Wenn für ein Objekt der falsche Bereich definiert wurde, dann können Skripts nicht auf die Funktionalität des Objekts zugreifen.
16.7.1 Objektbereich Seite Normalerweise gilt eine Seite als Bereich eines Objekts, d.h. für jedes Skript auf der Seite, auf der das Objekt erstellt wurde, ist das Objekt vorhanden und seine Funktionalität verfügbar. Wenn Sie auf der Seite default.asp ein Ad RotatorObjekt erstellt haben, dann können nur Skripts damit arbeiten, die auf der Seite default.asp vorhanden sind. Für Skripts auf anderen Seiten – etwa kontakt.asp – ist das Objekt nicht existent, eben weil es auf der Seite default.asp vorhanden ist. Jedes Objekt, das mit der Methode Server.CreateObject erstellt wird, arbeitet mit der Seite als Objektbereich. Wenn die Seite abgearbeitet ist, wird das Objekt – und damit auch die von ihm verwendeten Ressourcen – freigegeben.
16.7.2 Objektbereich Sitzung Sie können auch Objekte erstellen, für die Sie den Objektbereich Sitzung definieren können. Der Objektbereich Sitzung macht das Objekt allen Skripts verfügbar, die innerhalb der Sitzung verarbeitet werden. Sie sollten diesen Bereich für solche
Kapitel 16 • Active Server Pages
367
Komponenten verwenden, die mit Benutzerdaten arbeiten, welche im Verlauf einer Sitzung mehrfach auf Seiten verwendet werden. Die Verwendung des Objektbereichs Sitzung setzt Erfahrung mit Threading voraus, was allerdings ein ganz anderes Thema ist (weswegen ich an dieser Stelle auch nicht weiter darauf eingehen werde).
16.7.3 Objektbereich Anwendung Der dritte mögliche Objektbereich ist die Anwendung, d.h. das Objekt steht seiten- und sitzungsübergreifend für eine bestimmte Anwendung zur Verfügung. Dieser Bereich kann sich hinsichtlich der Serverleistung als vorteilhaft erweisen. Nehmen wir einmal an, Sie wollen die Komponente Ad Rotator verwenden, um auf Ihrer Website eine Bannerrotation zu realisieren. Wenn Sie dieses Objekt mit der Seite als Bereich erstellen würden, müsste jedes Mal, wenn ein Benutzer eine Seite öffnet, eine neue Instanz dieses Objekts erstellt werden. Jede geöffnete Seite würde ihre eigene Instanz erstellen, und jede Instanz würde sich negativ auf die Serverleistung auswirken. Wenn Sie dem Ad Rotator-Objekt nun den Objektbereich der Anwendung zuweisen, dann könnte jede Seite auf ein und dasselbe Objekt zugreifen und es benutzen, statt immer wieder ein neues Objekt zu erstellen. Das spart natürlich Serverressourcen. Weitere Informationen zu dem Objektbereich und zur Implementierung des Threading finden Sie in der IIS-Hilfe oder beim Microsoft Developer Network unter http://msdn.microsoft.com/library/default.asp; schlagen Sie dort unter Platform SDK/Web Services/Internet Information Services 5.0/Active Server Pages Guide/Active Server Pages/Building ASP Pages/Setting Object Scope nach.
16.8
Inhalte senden Jeder Text in einer ASP-Datei, der kein HTML-Tag ist und nicht zwischen den Trennzeichen <%und %> bzw. <SCRIPT> und steht, wird zur Anzeige an den Browser gesandt. Wie aus Listing 16.7 ersichtlich, müssen Inhalte, die im Browser angezeigt werden sollen, manchmal auch aus dem Code heraus gesendet werden. Hierzu wird die Methode Write des Objekts Response verwendet. <%@ LANGUAGE = "VBScript" %> <TITLE>Serverzeit GK Computer Consulting Hinweise zu Transaktionen <% Dim timeframe If Time < #12:00PM# Then
368
Inhalte senden
Response.Write "Guten Morgen " ElseIf Time >= #12:00PM# AND Time < #5:00PM# Then Response.Write "Guten Tag " Else Response.Write "Guten Abend " End If %> Willkommen auf unserer Website! Alle von Ihnen heute auf unserer Website durchgeführten Transaktionen erhalten unseren lokalen Zeitstempel. Dieser lautet im Moment <% =Now() %> Listing 16.7: newtime.asp
Listing 16.7 ähnelt stark Listing 16.1; ich habe lediglich ein paar Änderungen vorgenommen, um die Verwendung der Methode Response.Write zu veranschaulichen. Der Code überprüft nach wie vor, wie spät es auf dem Server ist, und sendet eine entsprechende Grußformel an den Client. Hier allerdings habe ich zur Übertragung des richtigen Textes an den Browser die Methode Response.Write benutzt. Da sich der Text innerhalb der Trennzeichen befindet, musste ich diese Methode verwenden, da der Browser den gesamten Code zwischen den Trennzeichen ignoriert und infolgedessen den Text auch nicht anzeigen würde. Sie können natürlich auch andere Daten als Text an den Clientbrowser senden. Das Objekt Response hat eine weitere Eigenschaft namens ContentType, die zur Spezifizierung des Typs von an den Browser gesendeten Inhalten benutzt wird. Der Browser wiederum verwendet diese Information, um zu bestimmen, ob er die Daten selbst anzeigt oder eine Hilfsanwendung hinzuziehen muss. Beispiele für dieses Verfahren finden Sie auf den Supportwebsites der meisten Hardwarehersteller, auf denen Sie häufig Listen mit zahlreichen Handbüchern zur Ansicht oder zum Download vorfinden. Die meisten dieser Manuals sind als PDF-Dateien formatiert und benötigen den Acrobat® Reader von Adobe®. Wenn Sie das Dokument nun herunterladen, müssen Sie den Reader selbst öffnen, um es betrachten zu können; wollen Sie sich das Dokument hingegen von der Website aus anzeigen lassen, dann muss der Server den Inhaltstyp pdf an den Browser senden, damit dieser weiß, dass der Acrobat Reader (sofern auf Ihrem System installiert) geöffnet werden und im Browserfenster konfiguriert werden muss. Der Browser erkennt die Inhaltstypen, weil er mit Hilfe von MIME (Multipurpose Internet Mail Extensions) eine Zuordnung der Dateikennungen vornehmen kann.
16.8.1 Die Methode Redirect Eine Methode zur Übermittlung von Inhalten an Clients – die Methode Redirect – hat sich als wertvolles Tool für IIS-Administratoren erwiesen. Technisch gesehen
Kapitel 16 • Active Server Pages
369
werden hierbei keine Inhalte an den Client gesendet, sondern der Clientbrowser wird an eine andere Seite oder Webadresse umgeleitet. Wenn Sie eine Seite oder den Standort von Inhalten einer Website ändern, dann können Sie mit der Methode Redirect sicherstellen, dass Clients an den richtigen Ort weitergeleitet werden, bis Sie alle notwendigen Änderungen an den entsprechenden Verknüpfungen der verschiedenen Seiten vorgenommen haben. Bei extrem großen Sites kann das ziemlich lange dauern, deswegen ist die Methode Redirect ganz sicher eine willkommene Neuerung. Ein weiterer Anwendungsfall für diese Methode ist es, sicherzustellen, dass Benutzer, die sich an einer Site angemeldet haben, welche eine Autorisierung erfordert, eine gültige Benutzerkennung eingeben. Wenn die Überprüfung der Kennung eine falsche Eingabe ergibt, dann können Sie Ihren Benutzer mit dem folgenden Codeausschnitt zu einer Registrierungsseite umleiten: <% If Session("userID")="" then Response.Redirect "registrierung.asp" End If %>
Mit diesem Code wird eine Sitzungsvariable namens userID auf das Vorhandensein eines Eintrags überprüft. Ist kein Eintrag vorhanden, dann hat sich der Benutzer noch nicht registriert und wird infolgedessen auf die Registrierungsseite umgeleitet. Dies geschieht mit Hilfe der Methode Response.Redirect. Dies sind nur ein paar Beispiele für die Übermittlung von Inhalten an den Client. Mehr Informationen und Anwendungsbeispiele finden Sie in der Onlinehilfe.
16.9
Dateien übermitteln Durch Verwendung von #include-Dateien können Sie sich Ihr Leben und das Ihrer Webentwickler ein bisschen leichter machen. C- und C++-Programmierer genießen die Möglichkeit der Verwendung vorhandener Codes in ihren Anwendungen bereits seit langem – Codes, die sie oder andere Programmierer geschrieben und vor allem fehlerbereinigt haben. Die Zeitersparnis ist immens, denn Sie müssen etwas, das bereits vorhanden ist, nicht noch einmal neu schreiben. IIS 5.0 kennt die Anweisung #include, die es Ihnen ermöglicht, genau das Gleiche zu tun wie diese C++-Programmierer. Vielleicht haben Ihre Webentwickler bereits eine Reihe von ASP- und HTML-Seiten erstellt, die Unternehmensstandard und deswegen auf jeder von der Website benutzten Seite anzuzeigen sind. Wenn ich FrontPage-Vorlagen verwende, um eine neue IIS-Site zu erstellen, dann baue ich zunächst einen Navigations-Frame oder -bereich auf, der alle notwendigen Links zu den Hauptseiten der Website enthält. Dann verwende ich die Anweisung #include, um diese Dateien im korrekten Frame oder Bereich jeder betroffe-
370
Sitzungen verwalten
nen Seite zu platzieren. Ich erstelle den Code also nur einmal, danach füge ich auf allen Seiten, die ihn benötigen, nur noch die entsprechenden Verweise ein. Die Syntax der Anweisung #include sieht wie folgt aus:
Achten Sie darauf, dass die Anweisung innerhalb der Kommentarzeichen steht. virtual oder file werden als Hinweis darauf verwendet, ob die #include-Datei in einem virtuellen oder einem normalen Verzeichnis abgelegt ist. dateiname ist der vollständige Pfad einschließlich des Namens der einzufügenden Datei. Bei der Benennung der #include-Dateien sollten Sie den Standards entsprechend die Erweiterungen .inc oder .stm verwenden, um diese Dateien von regulären HTML-Dateien in einem Verzeichnis unterscheiden zu können. #include-Dateien können ihrerseits wieder Verweise auf andere #include-Dateien enthalten. Das kann etwas verwirrend sein und ist eine potentielle Fehlerquelle. Sie können nämlich unabsichtlich eine Schleife konstruieren: include1.inc ruft dann include2.inc auf, die wiederum einen Aufruf von include1.inc enthält. Warnung #include-Dateien werden vor allen Skriptbefehlen auf einer Seite ausgeführt. Insofern ist es leider nicht möglich, mit Skripts Namen von #include-Dateien dynamisch zu erzeugen. Tipp Sie sollten Ihre #include-Dateien immer wieder prüfen, damit nicht unbeabsichtigt unnötiger Code auf Ihre Seiten gelangt, der womöglich Serverressourcen im großen Stil beansprucht.
16.10 Sitzungen verwalten Es dürfte klar sein, dass es sich bei HTTP um ein im freien Raum schwebendes Protokoll handelt – jede Anfrage, die an den Server gerichtet wird, wird als vollständig neue Anfrage ohne irgendeine Verbindung zu früheren Anfragen oder zu bestimmten Benutzerdaten behandelt. Aus diesem Grund ist es recht schwierig, Anwendungen zu entwickeln, die Benutzerdaten und -eingaben übernehmen, die während eines Besuches auf der Website ermittelt wurden. Ein Beispiel hierfür ist der Warenkorb in Onlinewarenhäusern wie Amazon.de oder Netzmarkt.
Kapitel 16 • Active Server Pages
371
16.10.1 Das Objekt Session Erfreulicherweise bietet uns ASP für dieses Dilemma eine Lösung. Mit Hilfe des Objekts Session kann der Server eine eindeutige Benutzerkennung erstellen und diese während einer Sitzung beibehalten. Hinweis Es gibt einen gravierenden Nachteil bei dieser Methode, den Sie in jedem Fall beachten müssen. Das Objekt Session verwendet Cookies; wenn der Browser Ihres Benutzers zur Ablehnung von Cookies konfiguriert ist, funktioniert diese Vorgehensweise natürlich nicht. Damit Sie verstehen, wie das Objekt Session funktioniert, müssen Sie sich klarmachen, wie eine Sitzung gestartet wird. Dies kann auf eine von vier unterschiedlichen Weisen geschehen: •
Der Server empfängt die Anforderung einer Seite oder Anwendung, die ein Cookie mit einer Sitzungskennung erfordert, die noch nicht vorhanden ist.
•
Eine angeforderte URL beinhaltet einen Verweis auf die Datei global.asa, die wiederum die Prozedur Session_OnStart enthält.
•
Der Benutzer speichert im Objekt Session einen Wert.
•
Die Datei global.asa einer ASP-Datei enthält ein -Tag, das ein Objekt mit dem Bereich »Sitzung« instanziert.
In allen Fällen wird ein Ereignis namens Session_OnStart ausgelöst, in das Sie den für diesen Fall gewünschten Code platzieren können. Dazu gehört beispielsweise die Einstellung eines Timeouts für die Sitzung, also der Zeitspanne (in Sekunden), die mit der letzten Seitenanforderung oder -aktualisierung durch den Benutzer beginnt und nach deren Ablauf die Sitzung endet. Dieser Wert muss entsprechend der Zeit, die der Benutzer wahrscheinlich benötigt, um andere Seiten aufzurufen oder vorhandene Seiten zu aktualisieren, gesetzt werden. Wählen Sie einen zu frühen Timeout, dann wird die Sitzung des Benutzers beendet; im Falle eines Onlineshops würde dann der Einkaufswagen quasi umgekippt und auf rabiate Weise entleert, und der Kunde müsste alle Eingaben (Einkäufe) von neuem vornehmen. Aber auch die Festsetzung eines zu späten Timeouts ist keine gute Idee, denn es gibt auch Kunden, die Transaktionen vorzeitig abbrechen. Die im Zuge solcher Vorgänge erstellten Objekte verbleiben im Speicher, bis der Timeout sie freigibt – bei zu hohen Timeoutwerten wird dabei der Speicher des Servers unnötig belastet. Wenn Sie das Objekt Session verwenden, erstellt der Server eine eindeutige Kennung für einen Benutzer, sobald dieser eine Sitzung initiiert. Der Server sendet diese Kennung als Cookie an den Clientbrowser und fordert diesen Cookie immer dann an, wenn neue Anfragen gemacht werden – auf diese Weise bleibt der
372
Auf Datenquellen zugreifen
Benutzer dem Server bekannt. Sie können das Objekt Session auch zur Speicherung von Variablen verwenden, die sich auf den Benutzer beziehen. Das könnte dann etwa so aussehen: <% Session("Vname") = "Markus" Session("Nname") = "Mustermann" %>
Diese Art der Flexibilität erlaubt Ihnen eine Anpassung der an den Client übermittelten Seiten, indem die Variablen im Code verwendet werden: Willkommen in unserem Onlineshop, <% =Session("Vname") %>
Wie Sie sehen, würde es hier keinen Unterschied machen, welcher Benutzer die Seite besucht – der korrekte Name wäre in der Variablen Vname abgelegt. Auch wenn es abwegig erscheint: Wenn ein Kunde mit seinem Namen angesprochen wird, dann macht das seinen Besuch zu einem schöneren Erlebnis. Mit dem Objekt Session lassen sich noch eine Menge weitere Dinge anstellen, aber ich möchte dieses Buch ja nicht mit einem Wust von Programmierthemen füllen, sondern Ihnen hier nur die eine oder andere Vorgehensweise zeigen; die tiefere Erforschung der Sachverhalte bleibt Ihnen oder Ihren Entwicklern überlassen. Die Onlinehilfe enthält eine Menge weitere Informationen über das Objekt Session und seine Verwendung.
16.11 Auf Datenquellen zugreifen Mit ASP können Sie aus den Skripts auf Ihren Webseiten heraus auf Datenquellen zugreifen. Bei dieser Datenquelle kann es sich um eine Microsoft Access-Datenbank auf Ihrem Server oder um eine beliebige andere ODBC-kompatible Datenquelle handeln, z.B. SQL Server, DB/2 oder Oracle. Sie können sogar auf Daten zugreifen, die in einer Textdatei oder einer Kalkulationstabelle abgelegt sind – Sie müssen nur die richtige Methode verwenden. Der häufigste Ansatz bei Datenquellen ist die Verwendung einer Backend-Datenbank, die über Hochleistungsmechanismen für den gleichzeitigen Zugriff durch mehrere Benutzer verfügt, also etwa SQL Server. Sie können Daten, die sich häufig ändern, in einer Datenbank ablegen und dann den Zugriff auf diese Datenbank von vielen Seiten Ihrer Website aus ermöglichen. Dies stellt eine Möglichkeit dar, viel Zeit zu sparen, denn Sie müssen eine Änderung nur in die Datenbank eingeben – alle Seiten, die die Daten verwenden, werden beim nächsten Zugriff auf die Datenquelle aktualisiert.
Kapitel 16 • Active Server Pages
373
Sie können eine Datenbank natürlich auch zur Speicherung von Benutzerdaten wie Namen und Kennwörtern verwenden und so unterschiedliche Zugriffsebenen oder andere Authentifizierungsmöglichkeiten realisieren. Mit den Datenzugriffsmöglichkeiten von ASP können Sie diese Daten dann bei Bedarf abrufen und benutzen. In ASP wird diese Datenbankanbindung mit Hilfe von ADO (ActiveX Data Object, ActiveX-Datenobjekt) ermöglicht. ADO ist eine Zugriffsschnittstelle für die Struktur einer ODBC-kompatiblen Datenquelle, d.h. Sie müssen sich nicht mit unpraktischen APIs herumschlagen, die die eigentliche ODBC-Schnittstelle bilden. Um über ASP auf eine Datenquelle zugreifen zu können, müssen Sie die notwendigen Verbindungsdaten erstellen. Dazu gehört auch eine Verbindungszeichenkette, die das Skript benutzt, um die Datenquelle zu finden; die Zeichenkette enthält den Datenquellentyp und alle gegebenenfalls benötigten Authentifizierungsangaben. Für die Beispiele in diesem Abschnitt werden wir eine Access-Datenbank verwenden, die vier Datenelemente enthält: Vor- und Nachnamen der Benutzer, Kennwörter und Zugriffsebenen. Erstellen Sie also mit Access eine Tabelle, die die Daten enthält, und nennen Sie sie Benutzer. Geben Sie der Datenbank selbst den Dateinamen userinfo.mdb und speichern Sie sie im Verzeichnis \wwwroot. Ich habe zu Demonstrationszwecken drei Benutzer in diese Datenbank eingetragen.
16.11.1 ODBC-Datenquelle auswählen Bevor Sie ein Objekt erstellen können, dass als Zugriffsmechanismus für eine Datenbank verwendet werden soll, müssen Sie die ODBC-Datenquelle auf dem Server konfigurieren. Gehen Sie wie folgt vor, um die für den Datenquellenzugriff benötigten Daten auf dem Server einzugeben: 1. Öffnen Sie die Systemsteuerung auf dem Server. 2. Doppelklicken Sie das Symbol VERWALTUNG , um das gleichnamige Fenster aufzurufen. Doppelklicken Sie dort das Symbol DATENQUELLEN (ODBC), wie in Abbildung 16.5 gezeigt. 3. Wählen Sie im Fenster ODBC-DATENQUELLEN-ADMINISTRATOR die Registerkarte SYSTEM-DSN (Abbildung 16.6). 4. Klicken Sie auf die Schaltfläche HINZUFÜGEN, um das Dialogfeld NEUE DATENQUELLE ERSTELLEN zu öffnen, und wählen Sie hier den Eintrag MICROSOFT ACCESS-TREIBER (*.MDB). Klicken Sie dann auf FERTIG STELLEN. Nun wird das Fenster ODBC MICROSOFT ACCESS SETUP (Abbildung 16.7) geöffnet.
374
Auf Datenquellen zugreifen
Abb. 16.5: Das Fenster VERWALTUNG enthält das Applet DATENQUELLEN (ODBC), über das die Datenquellen konfiguriert werden können
Abb. 16.6: Der ODBC-DATENQUELLEN-ADMINISTRATOR erlaubt Ihnen die Einstellung verschiedener Optionen für Datenquellennamen
Kapitel 16 • Active Server Pages
375
Abb. 16.7: Das Fenster ODBC MICROSOFT ACCESS SETUP, in dem Sie die Datenbank auswählen sowie einen Namen und eine Beschreibung eingeben können
5. Geben Sie im Textfeld DATENQUELLENNAME einen Namen für die Datenquelle ein. Wir verwenden diesen Namen als Referenz der Datenbank im ASP-Code. Sie können hier auch eine Beschreibung eingeben; diese ist aber nicht zwingend. 6. Klicken Sie im Abschnitt DATENBANK in der Mitte des Dialogfelds auf die Schaltfläche AUSWÄHLEN und suchen Sie die oben erstellte Datenbank. Belassen Sie die Einstellungen aller weiteren Optionen und klicken Sie auf die Schaltfläche OK. Der neue Datenquellennamen erscheint nun in der Liste SYSTEMDATENQUELLEN des Dialogfelds ODBC-DATENQUELLEN-ADMINISTRATOR. Die Datenquelle wird nun erstellt und auf dem Server installiert, damit der Zugriff über den ASP-Code möglich ist.
16.11.2 Über eine Webseite auf die Datenbank zugreifen Nun müssen Sie von der Webseite aus auf die Datenbank zugreifen. Listing 16.8 zeigt, wie die benötigte Datenbankverbindung hergestellt wird. <%@ LANGUAGE = "VBScript" %> <TITLE>Beispiel für den Datenbankzugriff
376
Auf Datenquellen zugreifen
Datenbankzugriff <% Dim db Dim rs Dim strSQL Set db = Server.CreateObject("ADODB.Connection") db.Open "Benutzer" strSQL = "SELECT * FROM Benutzer" Set rs = db.Execute(strSQL) %> Nachname
Vorname
Zugriffsebene
<% Do While Not rs.EOF %> <% =rs("NName") %> <% =rs("VName") %> <% =rs("zugriffsebene") %> <% rs.MoveNext Loop db.Close %> Listing 16.8: database.asp
Kapitel 16 • Active Server Pages
377
Dieser Code stellt einen Kontakt zur weiter oben erstellten Datenbank userinfo.mdb mit dem Datenquellennamen Benutzer her. Als Erstes wird eine ADODB-Verbindung hergestellt und die Datenbank geöffnet. Um Einträge aus der Datenbank zu extrahieren, verwenden Sie die SQL-Anweisung SELECT * From Benutzer. Entsprechend dieser Anweisung wählt ADO alle Einträge aus, die es in der Tabelle Benutzer findet, welche Bestandteil der gerade geöffneten Datenbank ist. Die Daten werden dann zur Erstellung einer Datensatzgruppe benutzt; hierbei handelt es sich um den Datenmechanismus, der die von der Datenbank zurückgegebenen Datensätze manipuliert. Nach der Zuweisung von Daten an die Datensatzgruppe erstellen Sie auf dynamischem Wege eine Tabelle und füllen diese mit den Einträgen für Vor- und Nachnamen und für die Zugriffsebene, die der Datenbank entnommen werden. Beachten Sie hierbei die Verwendung der Zeile <% Do While Not rs.EOF %> im Code: Durch Verwendung dieses Schleifentyps und dem Vergleich des Zählers mit rs.EOF können Sie die Tabelle mit den Daten füllen. Sie müssen dabei gar nicht wissen, wie viele Einträge in der Tabelle vorhanden sind, denn die Schleife endet, sobald die Datensatzgruppe deren Ende – angezeigt durch die Eigenschaft EOF – erreicht. Weitere Informationen zu den Eigenschaften von Datensatzgruppen finden Sie in der ADO-Dokumentation unter http://msdn.microsoft.com/library/ psdk/dasdk/adot9elu.htm. Abbildung 16.8 zeigt die Ausgabe der Datei database.asp im Internet Explorer. Beachten Sie, dass das Kennwortfeld nicht angezeigt wird, denn dies könnte tatsächlich ein Sicherheitsrisiko sein. Das vorhergehende Beispiel beinhaltet nur einen ganz einfachen Datenzugriff mit Hilfe von ASP. Sie könnten auch eine solche Datenbank erstellen und dann auf deren Daten zugreifen, um innerhalb Ihres ASP-Codes zu entscheiden, ob und inwieweit Benutzer auf eine Website zugreifen können.
378
Transaktionen
Abb. 16.8: Der Internet Explorer zeigt die Ergebnisse des Zugriffs auf die Benutzerdatenbank aus dem ASP-Code heraus an
16.12 Transaktionen Wenn Sie einen Onlineshop auf Ihrem Webserver konfiguriert haben, damit Benutzer Ihre Produkte über das Internet bestellen können, dann benötigen Sie eine zuverlässige Vorgehensweise bei der Erfüllung verschiedener Aufgaben: Die Bestellung und die Zahlungsdaten (Bankeinzug/Kreditkarte) müssen an Sie übermittelt werden, der Zahlungsbetrag muss angezeigt werden, und der Kunde will selbstverständlich auch eine Bestätigung seiner Bestellung sehen. Sie benötigen also eine Möglichkeit, sicherzustellen, dass all diese Schritte beim Kauf eines Produkts ausgeführt werden; gelingt einer dieser Schritt nicht, dann findet das Geschäft nicht statt. All diese Anforderungen werden mit Hilfe von Transaktionen realisiert. ASP ermöglicht die Verarbeitung von Transaktionen mit Hilfe der Transaktionsumgebung Component Services (Komponentendienste). Diese Umgebung erlaubt die Erstellung skalierbarer und zuverlässiger Hochleistungsanwendungen für das Internet. Eigentlich handelt es sich hierbei um ein Programmiermodell, dass auch eine Laufzeitumgebung zur Entwicklung und Verwaltung solcher Anwendungstypen verfügbar macht. Damit Ihre ASP-Seite eine Transaktion realisieren kann, müssen Sie sie mit der folgenden Codezeile initiieren:
Kapitel 16 • Active Server Pages
379
<%@ TRANSACTION=Required %>
Auch dieser Abschnitt kann lediglich die Möglichkeit des Transaktionseinsatzes in Ihren ASP-Skripts vorstellen. Transaktionen und COM-Programmierung sind Themen, die leicht ein ganzes Buch füllen könnten. Deswegen wird an dieser Stelle nicht weiter darauf eingegangen.
16.13 Skriptdebugging Ich schreibe nun seit mehr als einem Jahr ASP-Skripts und entwickle bereits seit drei Jahren Anwendungen in Visual Basic. Trotzdem ist es mir bis heute nicht gelungen, eine Seite oder Anwendung auf Anhieb völlig fehlerfrei zu erstellen. Was allerdings nicht weiter verwunderlich ist: Dies hat bisher wohl kaum ein Programmierer geschafft. Die Bandbreite der Fehler reicht von so einfachen Dingen wie Rechtschreibfehlern bis hin zu komplexen Sachverhalten – wenn etwa Syntaxfehler vorliegen. Mit den Fehlerbereinigungsmöglichkeiten von ASP können Sie diese Fehler finden und beheben. Ob Sie es glauben oder nicht: Der einfachste (und auch von mir meisteingesetzte) Debugger ist nichts anderes als der Browser selbst. Wenn Sie eine fehlerhafte Seite im Internet Explorer öffnen, dann zeigt das Browserfenster eine Fehlermeldung an. Abbildung 16.9 zeigt ein Beispiel. Wie Sie dem in Abbildung 16.9 angezeigten Fehlertyp entnehmen können, hat das Skript versucht, auf eine Tabelle in der Datenbank zuzugreifen, die nicht vorhanden ist (hinterhältig habe ich die Beispieldatenbank nämlich vor dem Aufruf des Skripts in Benuetzer umbenannt). Es wird Ihnen sogar gezeigt, in welcher Zeile der Fehler aufgetreten ist. Dieses Beispiel demonstriert, wie ein einfacher Tippfehler ein Skript unbrauchbar machen kann. Ich empfehle Ihnen, Ihre Skripts immer in einer Testumgebung zu überprüfen, bevor Sie sie auf den Produktionsserver überspielen. Wenn Sie mehr Kontrolle über die Fehlerbereinigung Ihrer Skripts haben wollen, können Sie auch den Microsoft Skript-Debugger einsetzen. Dieses Tool gestattet Ihnen die zeilenweise Abarbeitung Ihres Codes, zeigt Variablen in einem Fenster an, erlaubt das Einfügen von Pausen oder Haltepunkten in den Code und die Überwachung von Prozeduren. Ein Nachteil des Programms besteht darin, dass Sie Ihre Skripts innerhalb des Tools nicht editieren können.
380
Integrierte ASP-Objekte
Abb. 16.9: Der Internet Explorer zeigt einen ASP-Skriptfehler an
16.14 Integrierte ASP-Objekte ASP verfügt bereits werksseitig über eine Reihe von Objekten, die es Ihnen gestatten, auf Daten auf dem Server zuzugreifen, auf Browseranfragen zu reagieren und Benutzerdaten zu speichern. Die Objekte sind in der folgenden Liste aufgeführt. Weitergehende Informationen zu den einzelnen Objekten finden Sie in der Onlinehilfe. •
Application. Stellt einen Mechanismus zur gemeinsamen Nutzung von Daten durch alle Benutzer einer Anwendung bereit.
•
Request. Ermittelt Informationen aus den HTTP-Headern und Formulardaten, die mit Hilfe der Methoden GET und POST ermittelt wurden. Das Objekt Request kann auch auf Daten, die in Cookies gespeichert sind, sowie auf Binärdaten in Dateien zugreifen, die auf den Server hochgeladen wurden.
•
Response. Erlaubt Ihnen eine Steuerung der Daten, die Sie als Cookie oder im HTML-Format an den Benutzer übermitteln.
Kapitel 16 • Active Server Pages
381
•
Server. Gibt Ihnen Zugriff auf die Eigenschaften und Objekte auf dem Server. Die Verwendung dieses Objekts wurde in diesem Kapitel bereits anhand der Methode Server.CreateObject verdeutlicht.
•
Session. Speichert Daten, die für die gesamte Sitzung Gültigkeit haben (z.B. Benutzerdaten), zur seitenübergreifenden Verwendung.
•
ObjectContext. Wird bei der Verarbeitung von Transaktionen verwendet, um eine Transaktion anzunehmen oder abzubrechen.
•
ASPError. Fängt ASP-Fehler ab, wodurch Sie in die Lage versetzt werden, den Benutzern gegebenenfalls detailliertere und freundlicher formulierte Fehlermeldungen anzeigen zu lassen.
All diese Methoden werden in der IIS-Hilfe in den Abschnitten über ASP umfassend beschrieben. Da die meisten Administratoren nicht mit der Erstellung von und der Arbeit mit solchen Komponenten befasst sind, überlasse ich die Details den Webentwicklern.
16.15 Fazit Die Informationen in diesem Kapitel sind als Einführung in die Arbeit mit Active Server Pages gedacht und sollten keinesfalls als Lehrbuch zu diesem Thema betrachtet werden. Ich habe Ihnen ein paar Beispiele zur Verwendung von ASP gezeigt, die Ihnen das Leben bei der Administration Ihrer Webserver ein wenig leichter machen sollen. Die Verwendung der in ASP bereits integrierten Objekte ermöglicht die Automatisierung zahlreicher Administrationsaufgaben auf Ihrem Server. Ferner habe ich Ihnen einige Prozeduren gezeigt, damit Sie sehen können, wie ASP durch Einstellung von Timeouts für Skriptobjekte die Belastung des Servers reduzieren kann. So können Ressourcen schneller wieder freigegeben werden. Sie haben außerdem gesehen, wie man sich durch Verwendung von #includeDateien in ASP-Skripts eine Menge Zeit bei der Webentwicklung sparen kann, indem man nämlich vorhandene ASP- und HTML-Dateien in anderen Webseiten wiederverwendet. Auch wenn ASP eigentlich nicht als Tool zur Serveradministration gedacht ist, zeigen Ihnen diese Beispiele doch, wie man ASP zum eigenen Vorteil einsetzt. Ich lege Ihnen in diesem Zusammenhang dringend die Lektüre der entsprechenden Seiten auf der MSDN-Website nahe; hier finden Sie eine Menge Informationen zu ASP und möglichen Einsatzgebieten.
Kapitel 17 Installierbare ASP-Komponenten 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 17.10 17.11 17.12 17.13 17.14
Die Komponente Ad Rotator Die Komponente Browser Capabilities Die Komponente Content Linking Die Komponente Content Rotator Die Komponente Counters Die Komponente Datenbankzugriff Die Komponente Dateizugriff Die Komponente IIS-Protokollierung Die Komponente MyInfo Die Komponente Page Counter Die Komponente Permission Checker Die Komponente Status Die Komponente Tools Fazit
384 387 391 394 395 398 399 399 407 407 409 410 412 413
384
Die Komponente Ad Rotator
ASP beinhaltet eine Reihe installierbarer Komponenten, die Sie auf Ihren Websites verwenden können, um Interaktivität und dynamische Inhalte zu realisieren. In diesem Kapitel sollen diese Komponenten beschrieben und jeweils ein Anwendungsbeispiel aufgeführt werden.
17.1
Die Komponente Ad Rotator Die Komponente Ad Rotator wird zur Erstellung eines Ad Rotator-Objekts auf einer ASP-Seite benutzt, welches abwechselnd verschiedene Werbebanner anzeigt – wie man es eben von einer Bannerrotation her gewohnt ist. Statt aber die Bilder zeitbasiert zu wechseln, wird immer dann ein neues Banner aufgerufen, wenn der Benutzer eine neue Seite aufruft oder die Schaltfläche AKTUALISIEREN anklickt.
17.1.1 Übersicht Der Ad Rotator verwendet zur Feststellung der für die Banner benötigten Planungs- und Dateidaten eine Ablaufplandatei im ASCII-Format. Ferner ist auch eine Umleitungsdatei vorhanden, die überwacht, wie oft ein bestimmtes Banner angeklickt wird, und außerdem die Umleitung zur korrekten URL vornimmt. Listing 17.1 zeigt einen Ad Rotator-Code für Ihre Site. In diesem Fall wird die Ad Rotator-Komponente ganz einfach oben auf dem Bildschirm angezeigt. Bei jedem Aufruf und jeder Aktualisierung der Seite wird ein anderes Banner aufgerufen. <%@ LANGUAGE="VBScript" %> <TITLE>Bannerrotation <% Set ad = Server.CreateObject("MSWC.AdRotator") %> <%= ad.GetAdvertisement("adrot.txt") %> Willkommen auf unserer Werbeseite! Listing 17.1: rotator.asp
Damit diese Seite ordnungsgemäß arbeitet, benötigen Sie eine korrekt konfigurierte Umleitungsdatei. Diese Datei adrot.txt finden Sie in Listing 17.2. REDIRECT redirect.asp WIDTH 440 HEIGHT 60
Kapitel 17 • Installierbare ASP-Komponenten
385
BORDER 1 * http://localhost/gkad.gif http://www.gkcomput.com/ Bringt Ihnen die Welt nach Hause! 33 http://localhost/samsad.gif http://www.mcp.com/sams Sams Publishing 33 http://localhost/mut.gif http://www.mut.de/ Markt und Technik Verlag 33 Listing 17.2: adrot.txt
Diese ASCII-Datei folgt einer bestimmten Syntax. Der erste Abschnitt weist – falls vorhanden – die zu verwendende Umleitungsdatei aus und setzt dann Höhe, Breite und Rahmenbreite der Bilder. Diese Abmessungen sollten unbedingt beachtet werden, damit die für den Ad Rotator zu verwendenden Bilder auf Ihrem Server auch die richtige Größe haben. Ein Sternchen (*) trennt den folgenden Bereich ab, der die Pfade und Namen zu den Bilddateien, die jeweilige Ziel-URL und den Ersatztext für Browser enthält, die Grafiken nicht unterstützen oder bei denen der Benutzer die Grafikanzeige deaktiviert hat. All diese Angaben stehen jeweils in einer separaten Zeile. Die letzte Option jedes Eintrags ist ein ganzzahliger Prozentwert, der angibt, wie häufig die jeweilige Anzeige im Verhältnis zu den anderen Anzeigen aufgerufen werden soll. Die letzte erwähnte Datei war die Umleitungsdatei. Diese Datei enthält den ASPSkriptcode, der einen Benutzer nach Anklicken einer Anzeige mit der korrekten URL verbindet. Listing 17.3 zeigt eine sehr einfache Umleitungsdatei für unser kleines Beispiel. <%@ LANGUAGE="VBScript" %> <TITLE> <% Response.Redirect(Request.QueryString("url")) %> Listing 17.3: redirect.asp
386
Die Komponente Ad Rotator
Beachten Sie, dass diese Datei die Methode Request.QueryString verwendet, um die URL zu holen, die beim Anklicken der Anzeige durch den Benutzer übergeben wird. Die Variable url wird durch die korrekte URL einer Seite ersetzt, die entweder die Homepage des werbenden Unternehmens oder eine Seite ist, auf der es direkt um den beworbenen Artikel geht.
17.1.2 Eigenschaften Nachdem Sie nun gesehen haben, wie der Ad Rotator funktioniert, wollen wir noch einen Blick auf die Eigenschaften dieser Komponente werfen. Der Ad Rotator verfügt über lediglich drei Eigenschaften. Border Diese Eigenschaft bestimmt, ob das Werbebanner von einem Rahmen umgeben sein soll oder nicht. Das einzige Argument dieser Eigenschaft ist die Größe. Syntax Border=groesse
groesse ist eine ganzzahlige Variable, die festlegt, wie breit der Rahmen ist. Die Eigenschaft wird im oberen Abschnitt der Ablaufplandatei gesetzt, in der die Größe des Banners konfiguriert wird. Clickable Dies ist ein Boolescher Wert, der nur wahr (TRUE) oder falsch (FALSE) sein kann. Wenn Sie den Wert TRUE wählen, dann zeigen Sie dem Ad Rotator damit an, dass das Banner als Hyperlink verwendet werden kann, d.h. beim Anklicken wird der Client auf die Ziel-URL umgeleitet. Standardmäßig hat die Eigenschaft Clickable den Wert TRUE. Syntax Clickable=wert wert ist entweder TRUE oder FALSE.
Wenn Sie nicht wollen, dass der Ad Rotator ein Banner als Hyperlink verwendet, dann müssen Sie diese Eigenschaft gleich bei der Initialisierung des entsprechenden Objekts festlegen. Das sieht dann so aus: <% Set ad = Server.CreateObject("MSWC.AdRotator") ad.Clickable = FALSE %>
Kapitel 17 • Installierbare ASP-Komponenten
387
TargetFrame Wenn auf Ihren Seiten Frames verwendet werden, können Sie mit dieser Eigenschaft einen bestimmten Frame als Zielframe für Werbebanner festlegen. Syntax TargetFrame=frame frame bezeichnet den Namen des Frames, in dem die Anzeige erscheinen soll. Sie können für diese Variable auch HTML-spezifische Schlüsselwörter für Frames verwenden, also etwa _top, _child, _self usw.
Beispiel <% Set ad = Server.CreateObject("MSWC.AdRotator") ad.TargetFrame = _TOP %>
Standardmäßig hat diese Eigenschaft die Einstellung NO FRAME. GetAdvertisement Der Ad Rotator verfügt nur über eine Methode, nämlich GetAdvertisement. Diese Methode dient dem Auslesen der Ablaufplandatei und der Rückgabe der zugehörigen HTML-Daten. Beim Laden oder Aktualisieren einer Seite setzt sie das nächste geplante Banner im Ad Rotator-Komponentenfenster ein. Syntax GetAdvertisement("ablaufplandatei") ablaufplandatei ist der relative Pfad und Dateiname der Ablaufplandatei, die die Angaben zu den URLs der verschiedenen Banner enthält.
Beispiel <%= ad.GetAdvertisement("/ads/adrot.txt") %>
Die Datei adrot.txt befindet sich im Verzeichnis /ads, welches im Basisverzeichnis der Website vorhanden ist.
17.2
Die Komponente Browser Capabilities Diese Komponente wird verwendet, um die verschiedenen Fähigkeiten des Clientbrowser zu bestimmen. Diese Daten werden dann in einem BrowserTypeObjekt zurückgegeben, welches Sie dann in Ihrem Skriptcode benutzen können, um herauszufinden, ob ein Browser eine bestimmte Funktion überhaupt beherrscht, bevor Sie entsprechende Inhalte an ihn senden.
388
Die Komponente Browser Capabilities
Die Funktion wird mit Hilfe der Datei Browscap.ini realisiert. Der Header des HTTP-Benutzeragenten, der bei jeder Verbindung eines Clients mit einem Server an den Server gesandt wird, beinhaltet den Namen und die Versionsnummer des Browsers. Der Server vergleicht diese ASCII-Zeichenkette mit den Einträgen in der Datei Browscap.ini und schließt daraus auf die Fähigkeiten, über die der Browser verfügt. Die Komponente Browser Capabilities durchsucht die Datei Browscap.ini nach dem im Browserheader übergebenen Eintrag. Findet sie einen entsprechenden Eintrag, dann wendet sie die Eigenschaften an, die auf diesen Browsertyp zutreffen. Die Datei Browscap.ini befindet sich normalerweise im Verzeichnis %systemverzeichnis%\System32\inetsrv (%systemverzeichnis% bezeichnet wie immer das Installationsverzeichnis von Windows 2000). Listing 17.4 zeigt eine beispielhafte Browscap.ini. [IE 5.0] browser=IE Version=5.0 majorver=5 minorver=0 frames=True tables=True cookies=True backgroundsounds=True vbscript=True javaapplets=True javascript=True ActiveXControls=True Win16=False beta=True AK=False SK=False AOL=False Update=False [Mozilla/4.0 (compatible; MSIE 5.*; Windows 95*)] parent=IE 5.0 platform=Win95 beta=True [Mozilla/4.0 (compatible; MSIE 5.*; Windows 98*)] parent=IE 5.0 platform=Win98 beta=True [Mozilla/4.0 (compatible; MSIE 5.*; Windows NT*)]
Kapitel 17 • Installierbare ASP-Komponenten
389
parent=IE 5.0 platform=WinNT beta=True [Mozilla/4.0 (compatible; MSIE 5.*; Windows 2000*)] parent=IE 5.0 platform=Win2000 beta=True [Mozilla/4.0 (compatible; MSIE 5.*)] parent=IE 5.0 [*] browser=Default Version=0.0 majorver=#0 minorver=#0 frames=False tables=True cookies=False backgroundsounds=False vbscript=False javascript=False javaapplets=False activexcontrols=False AK=False SK=False AOL=False beta=False Win16=False Crawler=False CDF=False AuthenticodeUpdate= Listing 17.4: Die Datei Browscap.ini
Um es nicht zu übertreiben, liste ich hier keine vollständige Datei auf – wenn Sie wollen, können Sie sich den Inhalt der Datei im erwähnten Verzeichnis anzeigen lassen. Wenn zu einem Browser, der eine Verbindung zu Ihrer Site hergestellt hat, kein passender Eintrag in der Datei gefunden wird, dann befinden sich im letzten Abschnitt der Datei Einstellungen für einen Standardbrowser, die in diesem Fall angewandt werden. Syntax Set BrowserType = Server.CreateObject("MSWC.BrowserType")
390
Die Komponente Browser Capabilities
BrowserType ist der Name des Objekts, das durch den Aufruf von Server.CreateObject erstellt wird.
Beispiel (in dieser Form nicht vollständig lauffähig) <%@ LANGUAGE="VBScript" %> <TITLE>Browser Capabilities <% Set bc = Server.CreateObject("MSWC.BrowserType") %> Browser <%= bc.browser %> Version <%= bc.version %> Frames <% if (bc.frames = TRUE) then %> TRUE <% else %> NEIN <% end if %> Tabellen <% if (bc.tables = TRUE) then %> JA <% else %> NEIN <% end if %> Hintergrundsounds <% if (bc.BackgroundSounds = TRUE) then %> JA <% else %> NEIN <% end if %> VBScript <% if (bc.vbscript = TRUE) then %> JA <% else %> NEIN <% end if %> JScript <% if (bc.javascript = TRUE) then %> JA <% else %> NEIN <% end if %>
Dieser Beispielcode legt eine Browser Capabilities-Komponente an und erstellt dann eine Tabelle mit einigen Daten, die der Browser laut Überprüfung durch die Komponente darstellen kann. Die Daten werden mit den Einträgen in der Datei Browscap.ini abgeglichen und erhalten – sofern der Browser die entsprechende Funktion unterstützt – den Wert TRUE, andernfalls FALSE.
Kapitel 17 • Installierbare ASP-Komponenten
17.3
391
Die Komponente Content Linking IIS beinhaltet eine Komponente namens Content Linking, mit der Sie ein NextLink-Objekt zur Verwaltung von URLs und zur Navigation auf Ihrer Site erstellen können. Sie können diese Komponente verwenden, um ein Inhaltsverzeichnis für Ihre Site zu aktualisieren oder Verknüpfungen für die Schaltflächen ZURÜCK und VORWÄRTS zuzuweisen, die der Seitennavigation dienen. Die Komponente stellt diese Funktionalität über den Zugriff auf eine Content Linking-Listendatei bereit, die auf dem Server gespeichert ist. Syntax Set NextLink = Server.CreateObject("MSWC.NextLink")
Beispiel (in dieser Form nicht lauffähig) <% Set NextLink = Server.CreateObject ("MSWC.NextLink") count = NextLink.GetListCount ("/data/nextlink.txt") I =1 %>
Mit dem obigen Codeausschnitt können Sie unter Verwendung der Datei nextlink.txt, die eine Beschreibung der verfügbaren Verknüpfungen enthält, ein kleines Beispielinhaltsverzeichnis erstellen. Die Komponente Content Linking verfügt über eine Liste von Methoden, die alle für die Komponente notwendigen Funktionen ausführen. Diese Methoden sind nachfolgend beschrieben. GetListCount Diese Methode bestimmt die Anzahl der URLs, die in der Content LinkingListendatei gespeichert sind.
392
Die Komponente Content Linking
Syntax GetListCount(listenURL) listenURL ist der Pfad und Name der Content Linking-Listendatei.
Diese Methode gibt einen ganzzahligen Wert zurück, den Sie wie oben gezeigt in Ihrem Code verwenden können. GetListIndex Diese Methode ermittelt den Indexwert des aktuellen Eintrags. Die Listendatei agiert wie ein Array, in dem die vorhandenen URLs durch eine Indexnummer referenziert werden können. Syntax GetListIndex(listenURL) listenURL ist der Pfad und Name der Content Linking-Listendatei.
Verwenden Sie diese Methode, um den Indexwert der aktuellen Seite in der Content Linking-Listendatei festzustellen. GetNextDescription Verwenden Sie diese Methode, um die Beschreibung des nächsten URL in der Liste zu holen. Syntax GetNextDescription(listenURL)
Auch hier ist listenURL der Pfad und Name der Content Linking-Listendatei. Diese Methode gibt eine ASCII-Zeichenkette zurück, die die Beschreibung enthält. GetNextURL Diese Methode ermittelt den nächsten URL in der Dateiliste. Wenn Sie diese Methode in eine HREF-Anweisung integrieren, können Sie den Clientbrowser zur nächsten Adresse in der Liste leiten. Syntax GetNextURL(listenURL)
Beispiel ">Next Page
Kapitel 17 • Installierbare ASP-Komponenten
393
GetNthDescription Diese Methode findet die Beschreibung eines Elements, welches durch die im Aufruf vorhandene Indexnummer spezifiziert wird. Syntax GetNthDescription(listenURL, i)
Der in der Klammer vorhandene Wert i ist die zu findende Indexnummer. Sie können diesen Wert auch in einer Schleife zuweisen, um mehrere Beschreibungen nacheinander zu holen. GetNthURL Diese Methode holt den Wert des n-ten URL in der Content Linking-Listendatei. Syntax GetNthURL(listenURL, i) listenURL ist der Pfad und Name der Content Linking-Listendatei. i dient der Selektierung der korrekten Indexnummer.
GetPreviousDescription Verwenden Sie diese Methode, um die Beschreibung des vorherigen URL in der Liste zu holen. Syntax GetPreviousDescription(listenURL)
Diese Methode gibt eine ASCII-Zeichenkette zurück, die die Beschreibung enthält. GetPreviousURL Diese Methode ermittelt den vorherigen URL in der Dateiliste. Syntax GetPreviousURL(listenURL)
Diese Methode gibt eine ASCII-Zeichenkette zurück, die die URL enthält. Alle diese Methoden können im Code verwendet werden, um Daten zu ermitteln, die zur Erstellung des HTML-Codes notwendig sind, aus dem die Seiten bestehen.
394
17.4
Die Komponente Content Rotator
Die Komponente Content Rotator Diese Komponente wird für eine HTML-Inhaltsrotation benutzt, die auf den in einer entsprechenden Ablaufplandatei gespeicherten Daten basiert. Sie können diese Komponente etwa verwenden, um ein »Zitat des Tages« in einem bestimmten Frame zu platzieren, zu bestimmten Tageszeiten unterschiedliche Bilder anzuzeigen oder zeitbezogen zwischen verschiedenen HTML-Inhalten zu wechseln. Wie andere installierbare Komponenten auch müssen Sie den Content Rotator instanzieren, bevor Sie ihn verwenden können. Das geht mit der folgenden Codezeile: <% Set crRot = Server.CreateObject("MSWC.ContentRotator") %>
17.4.1 Die Inhaltsplandatei Wenn Sie Ihre Komponente erstellt haben, müssen Sie zunächst eine Inhaltsplandatei für die Inhaltsrotation erstellen, erst dann können Sie die Methoden des Objekts verwenden. Die Ablaufplandatei hat die folgende Syntax: %%[#gewichtung][//anmerkungen] inhaltszeichenkette
Die beiden Prozentzeichen %% signalisieren den Anfang eines neuen Abschnitts in der Datei. Das nächste Element ist optional und bezeichnet die »Gewichtung« des Eintrags. Die Gewichtung ähnelt vom Konzept her dem bei der Ad Rotator-Komponente verwendeten Prozentwert; sie bestimmt die Häufigkeit, mit der der Eintrag angezeigt wird. Sie können – abgetrennt durch die Kommentarzeichen // – auch optionale Anmerkungen und Kommentare zum Eintrag einfügen. Der Bereich inhaltszeichenkette beinhaltet die tatsächlichen HTML-Inhalte. Die Daten können sich über eine oder mehrere Zeilen erstrecken und Bilder, Texte und Klänge beinhalten. Alle Daten zwischen den ersten und den nachfolgenden Prozentzeichen %% werden als eine Inhaltszeichenkette betrachtet. Eine Beispieldatei mit drei Einträgen folgt: %% // Der erste Bereich Willkommen im ersten Bereich der Inhaltsplandatei %% #2 //Zweiter Bereich Text als HTML-Überschrift 1 %% #2
Kapitel 17 • Installierbare ASP-Komponenten
395
Hier sehen Sie eine Inhaltsplandatei mit drei Einträgen. Der erste Eintrag zeigt lediglich eine Textzeile an. Da keine Gewichtung definiert ist, wird standardmäßig der Wert 1 verwendet. Der zweite Bereich verwendet zur Formatierung des angezeigten HTML-Textes ein paar HTML-Tags und fügt außerdem eine horizontale Linie ein. Der dritte Bereich beinhaltet einen Link zu einem Bild. Der zweite und der dritte Bereich haben jeweils eine Gewichtung von 2, d.h. sie werden im Schnitt doppelt so häufig aufgerufen wie der erste Bereich. ChooseContent Diese Methode der Komponente Content Rotator ermittelt eine HTML-Inhaltszeichenkette in der Inhaltsplandatei. Jedes Mal, wenn die Seite geladen oder aktualisiert wird, holt ChooseContent eine neue Zeichenkette, welche die Komponente enthält. Syntax ChooseContent(inhaltsplandatei)
Ersetzen Sie inhaltsplandatei durch den Pfad und Namen Ihrer Inhaltsplandatei. Beispiel <% Set tagestipp= Server.CreateObject("MSWC.ContentRotator") tagestipp.ChooseContent("/contentrot/tagestipp.txt") %>
In diesem Beispiel würde eine Komponente auf Ihrer Webseite erzeugt, die nachfolgend einen Eintrag aus der Inhaltsplandatei tagestipp.txt entnehmen würde, die sich im Verzeichnis /contentrot befindet. GetAllContent Diese Methode holt alle Inhalte aus der Inhaltsplandatei und zeigt sie auf der Seite an. Jeder Bereich der Datei wird in diesem Fall durch eine horizontale Linie von den übrigen getrennt. Der häufigste Einsatz dieser Methode ist sicher das gleichzeitige Korrekturlesen aller in der Datei gespeicherten Inhalte. Syntax GetAllContent(inhaltsplandatei)
Ersetzen Sie inhaltsplandatei durch den Pfad und Namen Ihrer Inhaltsplandatei.
17.5
Die Komponente Counters Die Komponente Counters wird zur Erstellung eines Objekts Counters verwendet. Sie können eine beliebige Anzahl von Countern erstellen; es wird jedoch empfohlen, nur ein einziges Zählerobjekt einzurichten, da sich damit mehr als ein Counter erstellen lässt.
396
Die Komponente Counters
Wenn Sie einen Counter erstellt haben, existiert dieser so lange, bis Sie ihn wieder entfernen. Der Counter zählt nicht automatisch hoch – Sie müssen hierzu Methoden verwenden, die den Counterwert setzen oder erhöhen. Das Objekt Counters hat keinen begrenzten Bereich – jede Seite einer Site kann ein und denselben Counter aufrufen und ihn manipulieren. Der Zugriff auf den Counter erfolgt über seinen Namen. Wenn Sie beispielsweise einen Counter erstellt haben, der die Zugriffe auf eine Seite zählt, und diesen PageHits genannt haben, dann können Sie ein Skript schreiben, das den Counter bei jedem Zugriff auf die Seite um den Wert 1 erhöht. Sie können den Counter aber auch mit Hilfe eines ASP-Skripts erhöhen, das auf einer anderen Seite platziert wurde – verwenden Sie einfach nur den gleichen Namen PageHits. Alle Counter werden in der gleichen Textdatei counters.txt gespeichert. Diese Datei und die Datei counters.dll sollten im gleichen Verzeichnis liegen. In der Regel müssen Sie das Objekt Counters in der Datei global.asa hinzufügen, damit es für alle Seiten der Site verfügbar ist. Die Syntax zur Erstellung des Objekts Counters sieht so aus:
Dieses Beispiel erstellt ein Objekt mit der Kennung PageHits. Wie bereits erwähnt, greifen Sie auf die Funktionalität des Counterobjekts über die entsprechenden Methoden zu, die im Folgenden erläutert werden. Get Mit dieser Methode holen Sie den aktuellen Wert des Counters. Wenn kein Counter vorhanden ist, erstellt die Methode einen neuen Counter mit dem angegebenen Namen und setzt den Wert auf 0. Syntax Counters.Get(countername) countername ist der Name des Counters, dessen Wert geholt werden soll.
Beispiel Auf diese Seite erfolgten bereits <% =Counters.Get(PageHits) %> Zugriffe.
Dieses Beispiel holt den Wert des Counters PageHits und zeigt ihn im Text an.
Kapitel 17 • Installierbare ASP-Komponenten
397
Increment Diese Methode erhöht den Wert des Counters um 1. Sie können die Methode in der Prozedur Session_OnStart in der Datei global.asa einsetzen, um den Zähler bei jedem Zugriff auf die Seite hochzuzählen. Ist kein Counter vorhanden, so wird ein neuer Counter mit dem Wert 1 erstellt. Syntax Counters.Increment(countername) countername ist der Name des Counters, dessen Wert hochgezählt wird.
Beispiel <% Counters.Increment("PageHits") %>
Dieses Beispiel erhöht den Wert des Counters PageHits um 1. Remove Mit dieser Methode löschen Sie einen Counter aus dem Objekt Counters. Wenn sie diese Methode aufrufen, wird auch der entsprechende Eintrag in der Datei counters.txt entfernt. Syntax Counters.Remove(countername) countername ist der Name des Counters, der aus dem Objekt Counters entfernt und in der Datei counters.txt gelöscht werden soll.
Beispiel <% Counters.Remove("PageHits") %>
Dieser Code entfernt den Counter PageHits aus dem Objekt Counters und der Datei counters.txt. Set Dieses ist die einzige der vier verfügbaren Methoden, die zwei Parameter benötigt. Der erste ist der Name des zu manipulierenden Counters, der zweite ein ganzzahliger Wert, der den neuen Wert des Counters darstellt. Sie können mit der Methode einen beliebigen Wert für Ihren Counter festlegen. Der Hauptzweck besteht darin, den Counter mit dem korrekten Wert starten zu lassen, wenn Sie eine Seite nach der Vornahme von Änderungen wieder auf den Server hochladen. Syntax Counters.Set(countername, wert)
398
Die Komponente Datenbankzugriff
countername ist der Name des zu setzenden Counters, wert ist der neue Wert des
Counters. Beispiel <% Counters.Set("PageHits, 5000") %>
Sie könnten in Ihrem Code eine derartige Zeile verwenden, um Ihren Counter auf den Startwert 5000 zu setzen. Es gibt andere Möglichkeiten, Counter auf Webseiten einzusetzen. FrontPage verfügt über eine Zählerkomponente, die Sie mit FrontPage-Eigenschaften steuern können, und im Internet sind viele Counter frei verfügbar. Mit dieser Komponente können Sie jedoch den Counter selbst steuern und ihn erhöhen, wenn Sie es für angebracht halten.
17.6
Die Komponente Datenbankzugriff Die Komponente Datenbankzugriff verwendet das ADO-Modell, um auf Datenbanken auf dem Server zuzugreifen. Das ADO-Modell ist eine komplexe Methode für den Datenbankzugriff, die die Programmierung schwer zu handhabender Datenzugriff-APIs unnötig macht. Die ADO-Zugriffsmethoden verwenden eine Reihe von Konstanten wie etwa adOpenStatic oder adLockPessimistic. Diese Konstanten repräsentieren Cursortypen, Datensatzgruppentypen und Sperrmechanismen. Weitere Hinweise hierzu finden Sie in der ADO-Dokumentation unter http://www.microsoft.com/data/ ado/. Um diese Komponente benutzen zu können, müssen Sie ADO in der Datei global.asa referenzieren oder eine Datei hinzufügen, die die Namen der Konstanten enthält. Microsoft empfiehlt die Erstellung einer Referenz der ADO-Bibliothek in der Datei global.asa. Der nachfolgende Beispielcode zeigt, wie das geht:
Sie werden bemerken, dass ich in dieser Zeile die Programmbibliothek msado2x.dll genannt habe. Das liegt daran, dass momentan drei verschiedene 2erVersionen von ADO in Umlauf sind, nämlich 2.0, 2.1 und 2.5. Sehen Sie im erwähnten Verzeichnis nach, um sicherzustellen, dass Sie die Version benutzen, die auf Ihrem Server vorhanden ist.
Kapitel 17 • Installierbare ASP-Komponenten
17.7
399
Die Komponente Dateizugriff Diese Komponente ermöglicht Ihnen die Erstellung eines Objekts FileSystemObject auf Ihrem Server. Dieses Objekt gibt Ihnen Zugriff auf das Dateisystem. Es sind Methoden, Eigenschaften und Sammlungen vorhanden, die über dieses Objekt den benötigten Zugriff auf das Dateisystem gestatten. Das Objekt FileSystemObject stellt die folgenden Objekte für die Arbeit mit dem lokalen Dateisystem bereit: •
Drive. Erlaubt Ihnen den Zugriff auf Laufwerke. Dabei kann es sich um physikalische oder logische, lokale oder Netzlaufwerke handeln.
•
Drives. Dies ist eine Auflistung, die eine Liste mit physikalischen und logischen Laufwerken enthält, die am System angeschlossen sind. Wechsellaufwerke werden auch dann in die Auflistung aufgenommen, wenn keine Medien einliegen.
•
File. Ein Objekt, mit dem Sie Dateien erstellen, löschen, kopieren und verschieben können. Ferner ist es möglich, am System die Existenz einer Datei abzufragen.
•
Files. Eine Auflistung, die eine Liste aller in einem Ordner vorhandenen Dateien enthält.
•
Folder. Ein Objekt, mit dem Sie Ordner im Dateisystem erstellen, löschen, kopieren und verschieben können. Ferner ist es möglich, am System die Existenz eines Ordners abzufragen.
•
Folders. Eine Auflistung, die eine Liste aller in einem Ordner vorhandenen Ordner enthält.
•
TextStream. Mit diesem Objekt können Sie Textdateien auf dem Server erstellen, lesen und speichern.
Bei der Arbeit mit dem Objekt FileSystemObject muss mit Umsicht vorgegangen werden, damit beim Zugriff auf Dateien auf Ihrem Server keine Sicherheitsprobleme entstehen.
17.8
Die Komponente IIS-Protokollierung Sie können Ihren Anwendungen gestatten, mit Hilfe der Komponente IIS-Protokollierung eine IIS-Protokolldatei auszulesen und ein IISLog-Objekt zu erstellen. Mit der Komponente können Sie Skripts und Anwendungen erstellen, die Ihre IIS-Protokolle lesen und Daten aus diesen Protokollen extrahieren können. Damit können Sie eine Menge Zeit sparen, da Sie die Protokolldateien nicht manuell durchsuchen müssen.
400
Die Komponente IIS-Protokollierung
Hinweis Ein Client, der mit einem Server, auf dem die Komponente IIS-Protokollierung ausgeführt werden soll, eine Verbindung herstellt, muss als Administrator oder als Server-Operator authentifiziert sein. Andere Benutzer oder solche, die sich anonym angemeldet haben und auf die Seite, auf der diese Komponente vorhanden ist, und damit auf die Komponente selbst zugreifen, bringen sie zum Absturz. Syntax Set logOne = Server.CreateObject(MSWC.IISLog) logOne ist der Name, der das IISLog-Objekt bezeichnet.
Wenn Sie ein IISLog-Objekt erstellt haben, können Sie die entsprechenden Methoden aufrufen und die Eigenschaften einstellen, die im Folgenden beschrieben werden. AtEndOfLog Diese Methode zeigt an, ob alle Einträge gelesen wurden. Sind keine weiteren Objekte vorhanden, dann gibt AtEndOfLog den Booleschen Wert TRUE zurück. Syntax AtEndOfLog()
CloseLogFiles Diese Methode schließt alle geöffneten Protokolldateien. Syntax CloseLogFiles(modus) modus bezeichnet einen von drei Parametern, die bestimmen, welche Dateien geschlossen werden sollen. Die Parameter sind:
•
1. Verwendet die Konstante ForReading und schließt Protokolldateien, die für den Lesezugriff geöffnet wurden.
•
2. Verwendet die Konstante ForWriting und schließt Protokolldateien, die für den Schreibzugriff geöffnet wurden.
•
32. Verwendet die Konstante AllOpenFiles und schließt alle Protokolldateien unabhängig davon, ob diese für den Lese- oder den Schreibzugriff geöffnet wurden.
OpenLogFile Diese Methode öffnet eine Protokolldatei für den Lese- oder Schreibzugriff.
Kapitel 17 • Installierbare ASP-Komponenten
401
Syntax OpenLogFile(dateiname, [modus], [DienstName], [DienstInstanz], [AusgabeLogDateiFormat])
Parameter •
dateiname. Der Name der zu öffnenden Protokolldatei.
•
modus. Bestimmt, wie die Datei geöffnet wird. 1 bedeutet Lesezugriff, 2 Schreibzugriff. Die Standardeinstellung ist 1.
•
DienstName. Dieser Parameter ist optional und wird verwendet, um anzuzeigen, dass das Protokollmodul nur die Einträge zurückgeben soll, die einen bestimmten Dienst betreffen.
•
DienstInstanz. Auch dieser Parameter ist optional und wird verwendet, um an-
zuzeigen, dass das Protokollmodul nur die Einträge zurückgeben soll, die eine bestimmte Instanz eines Dienstes betreffen. •
AusgabeLogDateiFormat. Ein weiterer optionaler Parameter. Er gibt das Proto-
kollformat an, falls das Protokoll für den Schreibzugriff geöffnet wurde. ReadFilter Diese Methode spezifiziert ein Start- und ein Enddatum als Auslesekriterium für das Protokoll. Syntax ReadFilter([startzeit], [endzeit])
Parameter •
startzeit. Verwenden Sie diesen optionalen Parameter, um das früheste Da-
tum mit Uhrzeit anzugeben, an dem Protokolleinträge gelesen werden sollen. •
endzeit. Verwenden Sie diesen optionalen Parameter, um das späteste Datum mit Uhrzeit anzugeben, bis zu dem Protokolleinträge gelesen werden sollen.
Beide Parameter sind optional und Sie können einen oder beide setzen, um die gewünschten Daten auszulesen. ReadLogRecord Mit dieser Methode lesen Sie den nächsten verfügbaren Protokolleintrag aus. Syntax ReadLogRecord()
Diese Methode hat keine Parameter.
402
Die Komponente IIS-Protokollierung
WriteLogRecord Mit dieser Methode schreiben Sie Einträge in eine vorhandene Protokolldatei. Syntax WriteLogRecord(IISLog)
Der Parameter IISLog ist ein Objekt, das anzeigt, wo die Protokolldateien gelesen werden. BytesReceived Diese Eigenschaft gibt die Anzahl der Bytes zurück, die während des Vorgangs empfangen wurden. Die Angabe bezieht sich auf die aktuelle Protokolldatei. Syntax bytes = BytesReceived
Die Variable bytes kann einen beliebigen Namen haben. Sie enthält die Anzahl der empfangenen Bytes. BytesSent Diese Eigenschaft gibt die Anzahl der Bytes zurück, die während des Vorgangs gesendet wurden. Die Angabe bezieht sich auf den aktuellen Protokolldateieintrag. Syntax zaehler=BytesSent
Auch die Variable zaehler kann einen beliebigen Namen haben. Sie enthält die Anzahl der gesendeten Bytes. ClientIP Diese Eigenschaft gibt die IP-Adresse des Clients zurück. Die Angabe bezieht sich auf den aktuellen Protokolldateieintrag. Syntax var=ClientIP
Die Variable var enthält die übergebene IP-Adresse des Clients. Cookie Mit dieser Eigenschaft können Sie den Cookie eines Clients untersuchen. Syntax var=cookie
Kapitel 17 • Installierbare ASP-Komponenten
403
Die Variable var enthält den übergebenen Cookie. CustomFields Diese Eigenschaft wird zur Ermittlung spezieller oder zusätzlicher HTTP-Header verwendet, die beim protokollierten Vorgang vorhanden waren. Diese Header werden als zweidimensionales Array zurückgegeben, das aus einem passenden Schlüssel mit einem Wert besteht. Syntax var=CustomFields
Die Variable var ist ein zweidimensionales Array, welches das zur Beschreibung des Headers verwendete Schlüssel/Wert-Pärchen enthält. DateTime Mit dieser Eigenschaft ermitteln Sie Datum und Uhrzeit der Erstellung des aktuellen Protokolleintragobjekts. Syntax var=DateTime
Die Variable var enthält die von der Protokolldatei zurückgegebenen Datumsund Uhrzeitangaben. Method Mit dieser Eigenschaft ermitteln oder extrahieren Sie eine HTTP-Operation aus dem Protokolleintrag. Syntax var=Method
Die Variable var enthält die Methode, die durch die HTTP-Operation verwendet wurde. Hierbei handelt es sich um Operationen wie GET oder PUT. ProtocolStatus Diese Eigenschaft gibt den Statuscode des HTTP-Protokolls zurück. Syntax var=ProtocolStatus
Die Variable var enthält den zurückgegebenen Statuscode. Statuscodes zeigen erfolgreiche oder fehlgeschlagene Ereignisse an, die durch das Protokoll aufgezeichnet wurden.
404
Die Komponente IIS-Protokollierung
ProtocolVersion Mit dieser Eigenschaft können Sie die Protokollversion des aktuellen Protokolleintrags ermitteln. Syntax var=ProtocolVersion
Die Variable var enthält den übergebenen Wert, der die Version des Protokolls beinhaltet, das laut Aufzeichnung für den Zugriff auf die Ressource verwendet wurde. Hierbei handelt es sich um eine Zeichenkette. Referer Wenn die Protokolldatei einen Zugriff über einen Hyperlink aufgezeichnet hat, dann gibt diese Eigenschaft den URL des Links zurück. Syntax var=Referer
Die Variable var enthält den URL, über den der Client auf die Website gelangt. ServerIP Diese Eigenschaft gibt die IP-Adresse des Servers zurück, der den aufgezeichneten Vorgang ausgeführt hat. Syntax var=ServerIP
Die Variable var enthält die IP-Adresse des Servers, die für den Zeitpunkt des Vorgangs aufgezeichnet ist. ServerName Mit dieser Eigenschaft lesen Sie den Namen des Servers aus. ServerName entspricht der Eigenschaft ServerIP, nur dass hier anstelle der IP-Adresse der Name des Servers zurückgegeben wird. Syntax var=ServerName
Die Variable var enthält den Namen des Servers als Zeichenkette. ServerPort Mit dieser Eigenschaft ermitteln Sie die während des Vorgangs verwendete Anschlussnummer.
Kapitel 17 • Installierbare ASP-Komponenten
405
Syntax var=ServerPort
Die Variable var enthält die im Protokoll aufgezeichnete Nummer des Anschlusses, auf den zum Zeitpunkt des Vorgangs zugegriffen wurde. ServiceName Mit dieser Eigenschaft extrahieren Sie den Namen des Dienstes, auf den zum Zeitpunkt des Vorgangs zugegriffen wurde. Zu diesem Namen gehört auch die Serverinstanz. Syntax var=ServiceName
Die Variable var enthält den Namen des Dienstes und der Serverinstanz (z.B. MSFTPSVC1 zur Anzeige des FTP-Dienstes, der den ersten FTP-Server verwendet). TimeTaken Diese Eigenschaft gibt die im Protokoll aufgezeichnete Gesamtdauer zurück, die der Prozess bis zum Abschluss benötigt hat. Syntax var=TimeTaken
Die Variable var enthält die Gesamtdauer des Prozesses. URIQuery Wenn ein Client beim Server einen URL mit Parametern angefordert hat, wie sie beispielsweise bei den Formularmethoden POST oder GET verwendet werden, dann gibt diese Eigenschaft die entsprechenden Informationen zurück. Syntax var=URIQuery
Die Variable var enthält die im Protokoll aufgezeichneten Parameter, die als Teil des URL übergeben wurden. URIStem Über diese Eigenschaft können Sie den im Protokoll für den Anforderungszeitpunkt aufgezeichneten URL holen. Syntax var=URIStem
406
Die Komponente IIS-Protokollierung
Die Variable var enthält den Ziel-URL abzüglich eventuell übergebener Parameter. UserAgent Mit dieser Eigenschaft geben Sie den Benutzeragenten des Browsers als Zeichenkette zurück. Syntax var=UserAgent
Die Variable var enthält den im Protokoll für den Anforderungszeitpunkt aufgezeichneten Zeichenkettenwert des Benutzeragenten. UserName Wenn Ihre Clients automatisch mit einem Benutzernamen und einem Kennwort authentifiziert werden, dann gibt diese Eigenschaft den für den Zeitpunkt des Vorgangs aufgezeichneten Benutzernamen zurück. Dies gilt nur für Verbindungen ohne anonymen Zugriff. Syntax var=UserName
Die Variable var enthält den Namen des am Server angemeldeten Benutzers. Win32Status Mit dieser Eigenschaft wird der Win32-Statuscode zurückgegeben, der zum Zeitpunkt des Vorgangs ausgestellt wurde. Syntax var=Win32Status
Die Variable var enthält den Win32-Statuscode. Wie Sie sehen, sind schon so einige Methoden und Eigenschaften vorhanden, mit denen Sie in den Protokolldateien die benötigten Daten abfragen können. Warnung Nur die vier Protokolldateiformate, die auch Bestandteil von IIS sind, können gelesen werden. Wenn Sie das Protokollierungsprogramm eines Drittanbieters verwenden, arbeitet dieses Objekt möglicherweise nicht wie hier beschrieben. Lesen Sie diesbezüglich die Dokumentation des Drittanbieterprodukts aufmerksam durch.
Kapitel 17 • Installierbare ASP-Komponenten
17.9
407
Die Komponente MyInfo Die Komponente MyInfo gestattet Ihnen die Erstellung von Eigenschaften eines MyInfo-Objekts, welches Informationen über Sie und Ihre Website enthält. Diese Komponente wird normalerweise mit den Windows 9x-Versionen des PWS (Personal Web Server) verwendet. Die MyInfo-Komponente für PWS enthält eine Reihe von Eigenschaften, die nicht für IIS gültig sind, insofern werde ich an dieser Stelle nicht weiter darauf eingehen. In der IIS-Onlinehilfe finden Sie detaillierte Informationen zu diesen Eigenschaften. Der wesentlichste Aspekt der Komponente MyInfo für IIS ist die Tatsache, dass Sie Ihre eigenen Eigenschaften erstellen und diesen dann Werte zuweisen können, die für Ihre persönliche Umgebung Gültigkeit haben. Um die Komponente verwenden zu können, müssen Sie zunächst eine Instanz davon erstellen: Set MeinEigenesInfoObjekt = Server.CreateObject("MSWC.MyInfo")
Sie können die Komponente auch in einer global.asa-Datei erstellen; verwenden Sie hierzu wie im folgenden Beispiel die -Tags:
Wenn Sie ein Objekt erstellt haben, können Sie beliebige Eigenschaften dafür hinzufügen und auf diese zugreifen, um die Daten zu erstellen, die das Objekt enthalten soll. <% MeinEigenesInfoObjekt.LieblingsFarbe = "Blau" MeinEigenesInfoObjekt.Auto = "7er BMW" %>
Dieses Beispiel erstellt zwei neue Eigenschaften für das Objekt MeinEigenesInfoObjekt, nämlich LieblingsFarbe und Auto. Dann werden den beiden Eigenschaften Werte zugewiesen. Diese Eigenschaften gelten für die gesamte Website und können jederzeit innerhalb eines Skripts aufgerufen werden, da das Objekt zuvor in der Datei global.asa erstellt worden ist.
17.10 Die Komponente Page Counter Diese Komponente wurde integriert, um festzuhalten, wie oft eine bestimmte Seite geöffnet wurde. Die Komponente ist anders als die Komponente Counters nicht für die ganze Website gültig, sondern immer nur für eine Seite.
408
Die Komponente Page Counter
Sie können die Komponente Page Counter verwenden, um zu bestimmen, welche Seiten am häufigsten und welche überhaupt nicht aufgerufen werden. Auf diese Weise können Sie Ihre Website optimieren, indem Sie Ihr Hauptaugenmerk auf stark frequentierte Seiten legen und solche, für die sich keiner interessiert, vom Server entfernen oder sie neu (und dann ansprechender) erstellen. Wenn Sie eine Page Counter-Komponente auf Ihrer Webseite erstellt haben, wird diese die ermittelten Daten regelmäßig in einer Textdatei auf der Festplatte ablegen, so dass diese im Falle eines Serverausfalls nicht verloren gehen. Die Page Counter-Komponente verwendet ein internes »zentrales Verwaltungsobjekt«, um die Anzahl der Zugriffe aufzuzeichnen. Bei der Erstellung der Page Counter-Komponente wird die bisherige Zugriffszahl beim zentralen Verwaltungsobjekt erfragt. Danach können Sie die Methoden der Komponente benutzen, um das Objekt zu manipulieren; wie das geht, wird weiter unten in diesem Abschnitt erläutert. Um ein Page Counter-Komponentenobjekt auf einer Webseite zu erstellen, verwenden Sie den folgenden Beispielcode: <% Set ctr = Server.CreateObject("MSWC.PageCounter") %>
Die Variable ctr ist der Name, über den Sie das Objekt aus dem Skriptcode heraus adressieren können. Ferner wird für das Objekt ein Registrierungsschlüssel erstellt, der unter HKEY_ CLASSES_ROOT/MSWC.PageCounter zu finden ist. Dieser Schlüssel enthält zwei Werte: •
File_Location. Eine Zeichenkette, die Pfad und Dateiname der Zählerdatei beinhaltet. Standardmäßig liegt diese Datei im Verzeichnis \WINNT und heißt hitcnt.cnt.
•
Save_Count. Ein DWORD-Wert, der zur Anzeige der Anzahl von Zugriffen dient, die vor der letzten Speicherung der Zugriffszahl in die Zählerdatei gültig war.
Mit der Page Counter-Komponente sind drei Methoden verknüpfbar: •
Hits. Diese Methode zeigt an, wie oft die Seite oder URL bereits angefordert wurde.
•
PageHit. Diese Methode erhöht die Trefferanzahl um den Wert 1.
•
Reset. Diese Methode setzt die Trefferanzahl für eine bestimmte Seite auf 0 zurück.
Kapitel 17 • Installierbare ASP-Komponenten
409
17.11 Die Komponente Permission Checker Wenn Sie auf Ihrer Website Authentifizierungsfunktionen einsetzen, um sensible Bereiche vor unbefugtem Zugriff zu schützen, dann können Sie die Komponente Permission Checker in Ihrem Code verwenden. Die Komponente Permission Checker ändert die Verfügbarkeit einer Webseite basierend auf den Zugriffsberechtigungen des Benutzers. Mit einem Skript können Sie beispielsweise die Zugriffsebene eines Benutzers überprüfen und darauf basierend nur jene URLs anzeigen, auf die Benutzer dieser Zugriffsebene zugreifen dürfen. Auf diese Weise sehen Benutzer nicht einmal Verweise auf Seiten, auf denen sie nichts zu suchen haben. Um die Komponente verwenden zu können, müssen Sie eine Instanz davon auf Ihrem Server erzeugen. Verwenden Sie den folgenden Code: Set prmCheck = Server.CreateObject("MSWC.PermissionChecker")
Sie können dann den Namen prmCheck (oder einen beliebigen anderen Namen) verwenden, um auf das Objekt zuzugreifen. Die Komponente Permission Checker hat nur eine Methode, nämlich HasAccess. Sie können diese Methode verwenden, um festzustellen, ob ein Benutzer über die notwendigen Rechte verfügt, um auf die angeforderte(n) Datei(en) zuzugreifen. Das folgende Beispiel zeigt, wie Sie die Komponente verwenden können, um den Zugriff auf eine Datei zu steuern: <% Set prmCheck = Server.CreateObject("MSWC.PermissionChecker") %> Dateizugriff = <% =prmCheck.HasAccess("C:\InetPub\wwwroot\sicheredatei.htm") %>
Sie können auch auf Zugriffsberechtigungen für physikalische oder virtuelle Dateien und Pfade prüfen. Damit die Komponente funktionieren kann, müssen Sie sich klarmachen, wie IIS Benutzer authentifiziert, sofern ein anonymer Zugriff möglich ist. Bei der ersten Aktivierung authentifiziert IIS alle Benutzer, die einen anonymen Zugriff verwenden. Dadurch wird verhindert, dass die Authentifizierungsmechanismen die Benutzerkonten überprüfen. Wenn Sie den Permission Checker verwenden, sollten Sie deswegen den anonymen Zugriff deaktivieren und die Authentifizierungsmethoden Standardauthentifizierung oder Integrierte Windows-Authentifizierung verwenden. Auf diese Weise überprüft IIS das betreffende Benutzerkonto und gewährt oder verweigert den Zugriff entsprechend. Wenn Sie auf ein und derselben Site sowohl einen anonymen als auch einen kennwortgeschützten Zugriff ermöglichen wollen oder müssen, dann sollten Sie den anonymen Zugriff auf sensible Seiten in jedem Fall unterbinden. In diesem Fall
410
Die Komponente Status
wird IIS die gewählte Authentifizierungsmethode verwenden, d.h. der Permission Checker arbeitet auf den derart eingeschränkten Seiten. Um einen anonymen Zugriff auf eine Seite zu verhindern, können Sie ACLs einsetzen. Alternativ können Sie auch mit ASP bestimmen, ob ein Benutzer die Seite ohne vorherige Eingabe einer Kombination aus Benutzernamen und Kennwort aufrufen will. Verwenden Sie den folgenden Beispielcode: <% If Request("USER_LOGON") = "" THEN Response.Status = "401 Unauthorized" End If %>
Dieser kleine Codeausschnitt zeigt die Fehlermeldung 401: Nicht autorisiert an, wenn ein Benutzer ohne Benutzernamen versucht, auf die Seite zuzugreifen. Aufgrund dessen wird IIS versuchen, die Autorisierung mit Hilfe einer der kennwortbasierten Authentifizierungsmethoden vorzunehmen. Tipp Ich empfehle Ihnen die Verwendung der Standardauthentifizierung, damit sichergestellt ist, dass auch andere Browser als der Internet Explorer bedient werden. Netscape und andere Browser unterstützen die Authentifizierungsmethode NTLM (Windows NT LAN Manager) nicht. Außerdem funktioniert NTLM manchmal nicht, wenn eine Proxyverbindung verwendet wird.
17.12 Die Komponente Status Mit dieser Komponente erstellen Sie ein Status-Objekt für Ihre Site. Sie können dann mit den Eigenschaften des Objekts die Serverstatusdaten überprüfen. Syntax Set Status = Server.CreateObject("MSWC.Status") Status ist der Name, mit dem die Komponente im Code adressiert wird. Sie kön-
nen dem Objekt einen beliebigen Namen geben. In ihrer momentanen Fassung kann die Komponente nur den Status des PWS für Macintosh zurückgeben. Wenn Sie versuchen, die Komponente auf einer Windows-Plattform zu verwenden, werden alle Statuseigenschaften als unavailable (nicht verfügbar) zurückgegeben. Um den Serverstatus für ASP-Skripts zu übergeben, die auf einem Macintosh-Computer entwickelt wurden, können Sie die folgenden Eigenschaften verwenden: •
VisitorsSinceStart. Die Anzahl der Besucher, die seit dem Serverstart Anfra-
gen gestellt haben. Da die Zählung auf der Basis der IP-Adresse erfolgt, wird jeder Besucher nur einmal gezählt.
Kapitel 17 • Installierbare ASP-Komponenten
411
•
RequestsSinceStart. Die Anzahl der Anforderungen seit dem Serverstart.
•
ActiveHTTPSessions. Die aktuelle Anzahl an Verbindungen.
•
HighHTTPSessions. Die höchste Anzahl gleichzeitiger Verbindungen seit
Serverstart. •
ServerVersion. Die Versionsnummer des Personal Web Server.
•
StartTime. Der Zeitpunkt des letzten Serverstarts.
•
StartDate. Das Datum des letzten Serverstarts.
•
FreeMem. Der Menge an freiem Speicher auf dem Computer.
•
FreeLowMem. Die niedrigste Menge an freiem Speicher auf dem Computer seit dem Serverstart.
•
VisitorsToday. Die Anzahl der Besucher seit Mitternacht lokaler Zeit. Da die
Zählung auf der Basis der IP-Adresse erfolgt, wird jeder Besucher nur einmal gezählt. •
RequestsToday. Die Anzahl der Anforderungen seit Mitternacht lokaler Zeit.
•
BusyConnections. Die Anzahl der Verbindungen, die zurückgewiesen wurden, da die Verbindungsobergrenze des Servers erreicht war.
•
RefusedConnections. Die Anzahl der Verbindungen, die aufgrund ungültiger
Authentifizierungsdaten zurückgewiesen wurden. •
TimedoutConnections. Die Anzahl der Verbindungen, die geschlossen wurden,
weil keine Anforderungen empfangen wurden. •
Ktransferred. Die Anzahl der Daten in Kbyte, die seit dem Serverstart übertra-
gen wurden. •
TotalRequests. Die Gesamtanzahl an Anforderungen, die empfangen wurden,
seit der Counter zum letzten Mal mit Hilfe des Administrationstools zurückgesetzt wurde. •
CurrentThreads. Die Summe aus aktiven HTTP-Verbindungen und der Anzahl
der Threads im Pool, die zur Zeit keine Verbindungen bearbeiten. •
AvailableThreads. Die Anzahl der Threads im Pool, die zur Zeit keine Verbin-
dungen bearbeiten. •
RecentVisitors. Dies ist eigentlich eine HTML-Tabelle, die die 32 letzten Be-
sucher einschließlich der Domänennamen oder IP-Adressen und der Anzahl der von Ihnen gestellten Anforderungen enthält. •
PopularPages. Eine weitere HTML-Tabelle für die 32 zuletzt besuchten Seiten einschließlich der URLs und der Anzahl der Anforderungen.
412
Die Komponente Tools
17.13 Die Komponente Tools Diese Komponente erstellt ein Tools-Objekt, welches fünf Methoden beinhaltet, die Sie verwenden können, um wirklich ausgefuchste Funktionen zu entwickeln und auf dem Webserver bereitzustellen. Das Objekt wird ähnlich wie die bereits besprochenen Objekte erstellt: Set Tool = Server.CreateObject("MSWC.Tools")
Die folgenden Abschnitte beschreiben die Methoden dieses Objekts und deren Einsatzgebiete. FileExists Diese Methode überprüft, ob eine Datei vorhanden ist. Falls ja, wird der Wert -1 zurückgegeben, andernfalls der Wert 0. Sie können diese Methode beispielsweise in einer If…Then-Abfrage benutzen: <% If Tool.FileExists("/images/logo.gif") Then %> <% End If %>
Dieser Codeausschnitt überprüft zuerst, ob die Datei logo.gif im Unterverzeichnis \images vorhanden ist, und fügt sie nur in diesem Fall in die Seite ein. Owner Mit dieser Methode stellen Sie fest, ob der aktuelle Benutzer der Siteadministrator ist. Wenn Benutzername und Kennwort übereinstimmen, dann wird der Wert -1 zurückgegeben, andernfalls der Wert 0. Die Methode funktioniert nur mit PWS für Macintosh. PluginExists Diese Methode gibt den Wert -1 zurück, wenn ein bestimmtes Macintosh-ServerPlug-In auf dem System vorhanden ist. Sie spezifizieren den Namen des Plug-Ins als Parameter der Methode wie im folgenden Beispiel: Tool.PluginExists(PlugInName)
Auf Windows-Computern gibt die Methode immer den Wert 0 zurück. ProcessForm Diese Methode verarbeitet von einem Benutzer übermittelte Formularinhalte. Dabei verwendet sie drei Parameter: •
OutputFileURL. Eine Zeichenkette, die den URL der Datei beinhaltet, an den die Daten gesendet wurden.
Kapitel 17 • Installierbare ASP-Komponenten
413
•
TemplateURL. Der URL, der die Vorlage für die Verarbeitung der Daten enthält.
•
InsertionPoint. Dieser Parameter ist optional und zeigt an, wo die Daten in der Ausgabedatei eingefügt werden sollen. Zur Zeit ist der Parameter noch nicht implementiert.
Random Diese letzte Methode gibt eine ganzzahlige Zufallszahl zwischen -32.768…+32.767 aus. Sie können zwei Funktionen mit Random verwenden, um die Ausgabe einzuschränken oder zu manipulieren. Beispielsweise können Sie die Funktion Abs benutzen, um nur positive Werte zu erhalten. Die Funktion Mod ermöglicht die Ausgabe einer Zahl unterhalb eines gewünschten Maximalwerts. Im Folgenden ein paar Beispiele. <% =Tools.Random %>
' Gibt eine ganzzahlige Zufallszahl im ' oben genannten Bereich aus. <% =(Abs(Tools.Random)) %> ' Gibt eine positive Zufallszahl aus. <% =(Abs(Tools.Random)) Mod 50 %> 'Gibt eine positive Zufallszahl zwischen 0 'und 49 aus.
17.14 Fazit Dieses Kapitel hat die Komponenten beschrieben, die IIS für die Verwendung in ASP-Skripts bereitstellt. Auch wenn noch nicht alle davon für die Windows-Plattform gedacht sind, so besteht doch durchaus die Möglichkeit, dass Microsoft sie in zukünftigen Versionen umsetzt. Einige dieser Komponenten – etwa die Protokollierungsfunktionen – können einem Administrator das Leben erleichtern, denn sie stellen Tools bereit, um Protokolldateien zu durchsuchen und basierend auf den in diesen Dateien vorhandenen Daten Berichte zu erstellen. Dadurch werden der Export der Daten in eine Textdatei und das nachfolgende Auffinden relevanter Daten mit einer entsprechenden Suchanwendung unnötig gemacht. Andere Komponenten wie Content Rotator oder Content Linking können administrative Aufgaben durch ihre Automatisierungsfähigkeiten erleichtern. Wie auch immer Ihr Bedarf aussieht, ich bin mir sicher, dass Sie hier mindestens eine Komponente finden, die Ihre tägliche Arbeit als IIS-Administrator etwas erleichtert.
Anhang A Referenz für den Administrator A.1 A.2 A.3 A.4 A.5 A.6 A.7
Registrierung Metabasis Windowsereignisse für IIS Referenz zu Leistungsindikatoren Referenz zu Timeouts Referenz zu den Protokollierungseigenschaften Referenz zur Umleitung
416 423 424 440 449 450 453
416
Registrierung
Dieser Anhang enthält für Sie – den Administrator – eine Referenz der Registrierung, der Metabasis und der Windows-Ereignisse, die für IIS relevant sind. Sie finden hier außerdem Informationen zu Leistungsindikatoren, Timeouts und Protokollierungseigenschaften. Jeder Bereich wird dabei in einem eigenen Abschnitt bearbeitet.
A.1
Registrierung Wie Sie bereits wissen, speichert die Windows-Registrierung Konfigurationsdaten für das Betriebssystem und die darunter laufenden Anwendungen und Dienste. Änderungen an der Registrierung können über die Systemsteuerung, das Windows-Setup, das Snap-In IIS-Administrator und die beiden Registrierungseditoren regedit und regedt32 vorgenommen werden. Tipp Falls Sie mit den beiden Utilities regedit und regedt32 nicht vertraut sind, sollten Sie wissen, dass nur regedit das Durchsuchen der Daten und Werte in der Registrierung gestattet; regedt32 ermöglicht lediglich die Suche nach Schlüsseln. Sie finden die Suchfunktion bei regedt32 im Menü SUCHEN. regedit hingegen verfügt über ein Menü namens BEARBEITEN, welches die Einträge SUCHEN und WEITERSUCHEN enthält. Praktische jede Referenz für die Editierung der Registrierung enthält auch den folgenden Warnhinweis: Es wird dringend empfohlen, Änderungen an der Registrierung möglichst nur mit der Systemsteuerung oder – in unserem Fall – mit dem IIS-Snap-In vorzunehmen. Dadurch wird verhindert, dass Sie unbeabsichtigt Änderungen vornehmen, die dazu führen, dass der Rechner nicht mehr gestartet werden kann.
A.1.1
Globale Einträge Die globalen Einträge sind über den Registrierungspfad CurrentControlSet\Services\InetInfo\Parameters zu erreichen.
HKLM\SYSTEM\
CacheSecurityDescriptor Typ: REG_DWORD. Bereich: 0,1. Standard: 1 Dieser Eintrag legt fest, ob die Dienstbeschreibungen für Dateiobjekte im Cache zwischengespeichert werden. IIS ermittelt die Sicherheitseinstellungen der Datei und legt sie im Cache ab. Dadurch wird ein Zugriff auf die Dateizugriffsberechtigungen des Dateiobjekts unnötig gemacht. CheckCertRevocation Typ: REG_DWORD. Bereich: 0, 1. Standard: 0.
Anhang A • Referenz für den Administrator
417
Dieser Eintrag gibt an, ob Clientzertifikate von IIS auf Widerruf überprüft worden sind. Wenn Sie ihn aktivieren, dann führt dies aufgrund der für die Überprüfung über das Internet benötigten Ressourcen zu Leistungseinbußen am Server. Insofern sollte eine Aktivierung nur stattfinden, wenn Ihr Server tatsächlich Zertifikate ausstellt. DisableMemoryCache Typ: REG_DWORD. Bereich: 0, 1. Standard: 0. Deaktiviert den Servercache. Dieser Schlüssel kann mit dem IIS-Snap-In nicht gesetzt werden. ListenBackLog Typ: REG_DWORD. Bereich: 1…250. Standard: 25 Mit diesem Eintrag legen Sie fest, wie viele Verbindungen in der Warteschlange gehalten werden, wenn der Server ausgelastet ist. Wenn Ihr Server extrem ausgelastet ist, dann können Sie diesen Wert auf 50 setzen. Falls Sie eine noch höhere Einstellung zu benötigen scheinen, sollten Sie dringend über ein Serverupgrade nachdenken. MaxConcurrency Typ: REG_DWORD. Bereich: 0…unendlich. Standard: 0 Mit diesem Eintrag legen Sie für das System die Anzahl der Threads pro Prozessor fest, die gleichzeitig für einen laufenden E/A-Vorgang ausgeführt werden können. Die Standardeinstellung (0) überlässt dem Server die Auswahl. MaxPoolThreads Typ: REG_DWORD. Bereich: 0…unendlich. Standard: 4 Dies ist die Anzahl der zu erstellenden Poolthreads pro Prozessor. Threads, die von ISAPI-Anwendungen benutzt werden, werden nicht berücksichtigt. PoolThreadLimit Typ: REG_DWORD. Bereich: 0…unendlich. Standard: 2 x # MByte Die maximale Anzahl der zu erstellenden Poolthreads. Dieser Wert begrenzt alle IIS-Threads und ist immer größer oder gleich dem Wert MaxPoolThreads. MinFileKbSec Typ: REG_DWORD. Bereich: 1…8192. Standard: 1000 Dieser Registrierungseintrag wird in Verbindung mit dem im IIS festgelegten Timeout-Wert und der Dateigröße verwendet. Wenn IIS eine Datei sendet, dann wird der Timeout-Wert als Grundlage dafür verwenden, wie lange IIS die Übertragung laufen lässt, bevor er sie stoppt. Der Wert ergibt sich aus der Summe des für IIS festgelegten maximalen Verbindungs-Timeouts und der Größe der Datei, geteilt durch den in diesem Schlüssel festgelegten Wert.
418
Registrierung
Hinweis Der Wert in diesem Schlüssel wird in Byte und nicht – wie der Name impliziert – in Kbyte gemessen. Ich habe absolut keine Ahnung, was Microsoft sich dabei gedacht haben könnte. ObjectCacheTTL Typ: REG_DWORD. Bereich: 0…unendlich. Standard: 30 Sekunden Dieser Eintrag steuert den TTL-Wert (Time To Live), der die Zeitspanne bezeichnet, für die Objekte im Cache gehalten werden. Sie verwenden ihn, um zu verhindern, dass selten gebrauchte Objekte Speicherkapazitäten belegen. Wenn für die angegebene Zeitspanne nicht auf ein bestimmtes Objekt zugegriffen wurde, dann wird es aus dem Speicher gelöscht, um Platz für ein neues Objekt zu schaffen. Es ist empfehlenswert, hier einen niedrigen Wert zu wählen, wenn Ihr Server nur über wenig Speicherressourcen verfügt. Sie können den Objekt-Cache auch deaktivieren, indem Sie diesem Schlüssel den Wert 0xFFFFFFFF zuweisen. Alle zwischengespeicherten Objekte bleiben im Cache, bis sie überschrieben werden. Ich rate von dieser Vorgehensweise ab, wenn Ihr Server nicht über genug Speicherressourcen verfügt. ThreadTimeout Typ: REG_DWORD. Bereich: 0…unendlich. Standard: 24 Stunden Dieser Eintrag zeigt die Zeitspanne an, die für die Aufrechterhaltung eines E/AThreads aufgewandt wird, falls keine Aktivitäten festzustellen sind. UserTokenTTL Typ: REG_DWORD. Bereich: 0…0x7FFFFFFF. Standard: 15 x 60 (=15 Minuten) Dieser Eintrag bezieht sich auf die Sicherheitsaspekte der Website. Wenn ein Benutzer eine Verbindung mit dem Server herstellt und zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert wird, dann erstellt der Server für den Benutzer ein Zugriffs-Token. Der Server wechselt dann die Identität dieses Tokens, wenn Zugriffe auf Ressourcen versucht werden, die es benötigen. Auf diese Weise legt der Server das Token im Cache ab, d.h. die Anmeldung muss nur ein einziges Mal erfolgen. Der Eintrag UserTokenTTL bestimmt die Lebensdauer des Tokens im Cache und wird in Sekunden gemessen.
A.1.2
Dienstspezifische Einträge Diese Einträge finden Sie über den Pfad HKLM\SYSTEM\CurrentControlSet\Services\dienstname\Parameters. Beachten Sie, dass der dienstname durch den Namen des gewünschten Dienstes ersetzt werden muss. Dies ist entweder MSFTPSVC für einen FTP- oder W3SVC für einen WWW-Dienst.
Anhang A • Referenz für den Administrator
419
AllowGuestAccess Typ: REG_DWORD. Bereich: 1,0. Standard: 1 (aktiv) Dieser Wert legt fest, ob Gastanmeldungen für die auf diesem Server ausgeführten Internetdienste gestattet sind oder nicht. Normalerweise ist der Gästezugang standardmäßig auf dem Server aktiv, aber die meisten Administratoren schalten ihn ab, um einen unberechtigten Zugriff auf die Serverressourcen zu unterbinden. Aus diesem Grund ist es empfehlenswert, den Wert auf 0 (nicht aktiv) zu setzen. EnableSvcLoc Typ: REG_DWORD. Bereich: 1,0. Standard: 1 (aktiv) Damit ein Dienst durch die MMC gefunden werden kann, muss er sich bei einem Dienst-Locator registrieren. Durch Zuweisung des Wertes 1 (aktiv) an diesen Eintrag weisen Sie den Dienst an, diese Registrierung vorzunehmen. LanguageEngines. Typ REG_STRING. Bereich: Zeichenfolge. Standard: keiner Es gibt noch einen weiteren Registrierungsschlüssel, der nicht automatisch erstellt wird, aber bei Bedarf im jeweiligen Dienstschlüssel liegt. Dies ist der Schlüssel LanguageEngines; er zeigt alle installierten Nichtstandardskriptsprachen an (d.h. alle Skriptsprachen außer VBScript und JScript). Der Schlüssel ist über den Pfad HKLM\SYSTEM\CurrentControlSet\Services\ W3SVC\ASP\LanguageEngines\sprachname zu finden, wobei die Variable sprachname den Namen der gewählten Sprache beinhaltet. Es gibt für diesen Schlüssel zwei Werteinträge: •
Write REG_SZ:Response.WriteEquiv |
•
WriteBlock REG_SZ:Response.WriteBlockEquiv |
Sie verwenden diesen Parameter, um eine Skriptsprache zu bezeichnen, die die Syntax objekt.methode nicht unterstützt. Die beiden oben erwähnten Werte werden benutzt, um die Befehle anzugeben, die den Befehlen Response.Write und Response.WriteBlock entsprechen. Ich empfehle Ihnen die intensive Lektüre der Dokumentation zu der Skriptsprache, die Sie verwenden wollen, damit die hundertprozentige Kompatibilität mit IIS gegeben ist. Falls Sie sich nicht sicher sind, sollten Sie besser VBScript oder JScript lernen.
A.1.3
Einträge für den WWW-Dienst Neben den bereits beschriebenen dienstspezifischen Einträgen gibt es für den WWW-Dienst noch ein paar weitere, die unter HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters zu finden sind.
420
Registrierung
AcceptByteRanges Typ: REG_DWORD. Bereich: 1,0. Standard: 1 (aktiv) Wenn Sie hier die Einstellung »1« (aktiv) wählen, verarbeitet der HTTP-Server den »Range«-Header für den Typ bytes. Die Verarbeitung erfolgt gemäß dem Internetentwurf Byte range extension to HTTP. AllowSpecialCharsInShell Typ: REG_DWORD. Bereich: 0, 1. Standard: 0. Wenn Sie diesen Eintrag durch Zuweisung des Werts 1 aktivieren, dann gestatten Sie bei der Ausführung von Stapelverarbeitungsdateien die Verwendung von Sonderzeichen ( |(,;%< >) in der Befehlszeile der Eingabeaufforderung (cmd.exe). Ich empfehle Ihnen jedoch dringend, die Standardeinstellung 0 beizubehalten, sofern für die Aktivierung kein zwingender Grund vorliegt. Es handelt sich hierbei um eine unter Sicherheitsaspekten sehr zweifelhafte Einstellung, denn sie kann von einem Eindringling zur Ausführung von Befehlen auf dem Server verwendet werden. DLCSupport Typ: REG_DWORD. Bereich: 0, 1. Standard: 0. Wenn Sie mehrere virtuelle Webseiten auf dem Server betreiben, die Hostheadernamen verwenden, dann sollten Sie hier den Wert 1 (aktiv) zuweisen. Dadurch ermöglichen Sie die Unterstützung älterer Browser, die mit Hostheadernamen eigentlich nichts anfangen können. DLCCookieNameString Typ: REG_STRING. Bereich: Zeichenfolge. Standard: keiner. Mit diesem Eintrag legen Sie den Namen eines Cookies fest, der an Clients älterer Bauart (Downlevel-Clients) gesendet wird. Die Zeichenkette enthält einen »Pseudo«-Hostheader, der es dem Server gestattet, die Anforderung des Clients an die korrekte Site weiterzuleiten. DLCHostNameString Typ: REG_STRING. Bereich: Zeichenfolge. Standard: keiner. Dieser Eintrag zeigt den Namen der Website an, die das Hostmenü für Downlevel-Clients enthält. Dieses ist im nachfolgend behandelten Eintrag DLCCookieMenuDocumentString vorhanden. Das Menü, von dem hier die Rede ist, ist eine HTML- oder ASP-Datei, die alle Websites auf dem Server auslistet, die über die gleiche IP-Adresse zu erreichen sind. Benutzer können aus diesem Menü die gewünschte Website auswählen. DLCCookieMenuDocumentString Typ: REG_STRING. Bereich: Zeichenfolge. Standard: keiner.
Anhang A • Referenz für den Administrator
421
Diese Zeichenkette enthält den Namen der Datei, die als Menü für DownlevelClients dient, die zwar Cookies, aber keine Hostheadernamen unterstützen. DLCMungeMenuDocumentString Typ: REG_STRING. Bereich: Zeichenfolge. Standard: keiner. Diesen Schlüssel können Sie für Clients benutzen, die auch keine Cookies unterstützen. Tragen Sie hier den Namen der Datei ein, die das Hostmenü enthält. Die Datei wird zur Einbettung des Hostnamens in die vom Client gesendete URL benutzt. DLCMenuString Typ: REG_STRING. Bereich: Zeichenfolge. Standard: keiner. Mit dieser Zeichenkette legen Sie ein spezielles Präfix für den von DownlevelClients angeforderten URL fest. Der Server vergleicht alle von Downlevel-Clients erhaltenen Anforderungen mit dieser Zeichenkette. LogSuccessfulRequests Typ: REG_DWORD. Bereich: 0, 1. Standard: 0. Dieser Eintrag teilt dem Server mit, ob erfolgreiche Ereignisse in der Protokolldatei aufgezeichnet werden sollen. Standardmäßig ist diese Funktion inaktiv, kann aber durch Zuweisung von 1 aktiviert werden. SSIEnableCmdDirective Typ: REG_DWORD. Bereich: 0, 1. Standard: 1. Dieser Wert ist standardmäßig nicht in der Registrierung vorhanden und muss bei Bedarf hinzugefügt werden. Wenn Sie den Schlüssel erstellen und ihm den Wert 1 (aktiv) zuweisen, dann gestatten Sie die Verwendung der serverseitigen Anweisung #exec cmd zur Ausführung auf dem Server. Die Aktivierung ist eine potentielle Gefahrenquelle bei Servern, die mit dem Internet verbunden sind, denn ein übelwollender Benutzer könnte ein Virus oder einen Trojaner auf den Server kopieren und diese Anwendung dann mit dem Befehl cmd ausführen. TryExceptDisable Typ: REG_DWORD. Bereich: 0,1. Standard: 0 Die Standardeinstellung dieses Schlüssels ist deswegen 0, weil andernfalls ein durch eine ISAPI-Anwendung verursachter Ausnahmefehler den Server anhalten würde. Der einzige akzeptable Grund für eine Aktivierung dieses Schalters liegt vor, wenn Ihre Entwickler eine Fehlerbereinigung ihrer Anwendungen durchführen. Bevor der Server wieder als Produktions-Server verwendet wird, muss die Einstellung deaktiviert werden.
422
Registrierung
UploadReadAhead Typ: REG_DWORD. Bereich: 0…0x80000000. Standard: 48 Kbyte Sie können mit diesem Eintrag steuern, wie viele Daten der Server liest, bevor er sie an die Anwendung übergibt. Wenn diese Daten an die Anwendung weitergeleitet werden, dann gibt der Server auch die Verantwortung an die Anwendung weiter, die übrigen Daten selbst zu lesen. Je höher der hier eingestellte Wert ist, desto mehr Arbeitsspeicher brauchen Sie für den Server. UsePoolThreadForCGI Typ: REG_DWORD. Bereich: 1,0. Standard: 1 Die CGI-Verarbeitung erfolgt in der Regel mit Hilfe eines Server-Poolthreads. Sie können die Einstellung aber auch deaktivieren (Wert 0), beispielsweise wenn die Verarbeitung Ihrer CGIs sehr lange dauert.
A.1.4
Einträge für den FTP-Dienst Auch der FTP-Dienst hat neben den dienstspezifischen Einträgen einige Sondereinträge in der Registrierung. Sie finden diese unter HKLM\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters. AnnotateDirectories Typ: REG_DWORD. Bereich: 1,0. Standard: 0 Über diesen Eintrag haben Sie die Möglichkeit, Verzeichnisse des FTP-Dienstes mit einer Anmerkung zu versehen, die in einer Anmerkungsdatei abgelegt wird. Wenn ein FTP CWD-Vorgang ausgeführt wird und die Datei im Zielverzeichnis vorhanden ist, dann übergibt der Server als Antwort den Inhalt der Datei. Auf diese Weise können Sie benutzerdefinierte Meldungen für beliebige Verzeichnisse erstellen. Die Datei heißt ~ftpsvc~.ckm und muss in dem Verzeichnis liegen, für das die Anmerkung gilt. Es empfiehlt sich ferner, der Datei das Attribut Versteckt zuzuweisen, so dass sie in den Dateilisten nicht aufgeführt wird. EnablePortAttack Typ: REG_DWORD. Bereich: 0, 1. Standard: 0. Da die Spezifikation des FTP-Dienstes passive Verbindungen basierend auf der vom Client angegebenen Anschlussadresse gestattet, ist diese Einstellung standardmäßig deaktiviert. Sie können dadurch verhindern, dass Eindringlinge heimtückischen Code auf dem Server ausführen. Der einzige Grund zur Aktivierung der Eigenschaft liegt vor, wenn Sie Ihren Benutzern ermöglichen wollen, sich über andere Anschlüsse mit dem FTP-Dienst zu verbinden.
Anhang A • Referenz für den Administrator
423
LowercaseFiles Typ: REG_DWORD. Bereich: 0, 1. Standard: 0. Der FTP-Dienst übernimmt die Einstellungen bezüglich der Großkleinschreibung von Dateinamen vom Betriebssystem. Das kann zu Problemen führen, wenn Dateivergleiche bei Dateisystemen mit Unterscheidung der Schreibweise (etwa UNIX oder Linux) verwendet werden. In diesem Fall können Sie diesen Eintrag aktivieren, um die Unterstützung von Dateinamenvergleichen mit Unterscheidung der Großkleinschreibung zu aktivieren.
A.2
Metabasis IIS verwendet eine als »Metabasis« bezeichnete Datenbank zur Speicherung seiner Konfigurationsdaten. Dadurch wird die Manipulation dieser Konfigurationsdaten mit Hilfe von Skriptsprachen sehr erleichtert. Die Metabasis konfiguriert die Konfigurationswerte als Objekte, auf die jede Skriptsprache mit Automationsaktivierung zugreifen kann. Warnung Die direkte Konfiguration der Metabasis ähnelt der direkten Bearbeitung der Registrierung. Es gibt gewisse Risiken, d.h. unangemessene Konfigurationsänderungen können zum Ausfall eines Dienstes führen. Am besten verwenden Sie das IIS-Snap-In oder das HTML-Administrationstool, um die notwendigen Änderungen an der Metabank vorzunehmen. Die Speicherorte der Metabasis-Eigenschaften sind im Namespace spezifiziert. Dieser Namespace arbeitet mit der folgenden Syntax: LM/dienst/website/stamm/virtuellesVerzeichnis/verzeichnis/datei
Dabei ist LM der Name des lokalen Computers, dienst bezeichnet den gewählten Dienst (entweder W3SVC oder MSFTPSVC). website ist der Name der Website, stamm das virtuelle Basisverzeichnis und virtuellesVerzeichnis der Name des virtuellen Verzeichnisses. verzeichnis schließlich benennt das Verzeichnis und datei den Namen der Datei Ein Beispiel für die Funktionsweise dieses Namespace sieht so aus: LM/W3SVC/Website1/Root
Dieser Namespace-Pfad könnte dann dem lokalen Pfad C:\InetPub\wwwroot\ Default.htm zugeordnet werden. Wenn Sie Metabasis-Eigenschaften auf der Ebene des Basisverzeichnisses definiert haben, dann erben dem Basisverzeichnis untergeordnete Objekte diese Einstellungen. Sie können aber an diesen untergeordneten Objekten individuelle Änderungen vornehmen, die dann Vorrang vor den ererbten Einstellungen haben.
424
A.3
Windowsereignisse für IIS
Windowsereignisse für IIS IIS generiert Ereignisse in der Ereignisanzeige, so dass Sie die ordnungsgemäße Ausführung der IIS-Dienste überprüfen können. Die Ereignisanzeige zeichnet Informations-, Warn- und Fehlerereignisse auf. Wenn auf der Registerkarte PROZESSOPTIONEN die Option FEHLGESCHLAGENE CLIENTANFORDERUNGEN IN DAS EREIGNISPROTOKOLL SCHREIBEN aktiv ist, werden alle ASP-Fehler in der Ereignisanzeige dargestellt und im Anwendungsprotokoll festgehalten und angezeigt. Um die Einstellung vorzunehmen, öffnen Sie den Internetdienste-Manager, klicken mit der rechten Maustaste auf das Computersymbol in der Baumstruktur und wählen EIGENSCHAFTEN. Stellen Sie sicher, dass im Listenfeld HAUPTEIGENSCHAFTEN die Einstellung WWW-Dienst gewählt ist, und klicken Sie dann auf die Schaltfläche BEARBEITEN. Wählen Sie nun die Registerkarte BASISVERZEICHNIS und klicken Sie dort im Abschnitt ANWENDUNGSEINSTELLUNG auf die Schaltfläche KONFIGURATION. Auf der Registerkarte PROZESSOPTIONEN des Dialogfeldes ANWENDUNGSKONFIGURATION aktivieren Sie das Kontrollkästchen FEHLGESCHLAGENE CLIENTANFORDERUNGEN IN DAS EREIGNISPROTOKOLL SCHREIBEN. Leider werden auch dann, wenn Sie diese Option aktiviert haben, immer noch nicht alle ASP-Fehler an das Ereignisprotokoll gesendet. Wenn Sie alle ASP-Fehler protokollieren wollen, müssen Sie der Metabasis-Eigenschaft AspErrorsToNTLog den Wert TRUE zuweisen. Weitere Hinweise zur Einstellung von MetabasisEigenschaften und IIS Admin Objects sowie zur Einstellung dieser Eigenschaft finden Sie in Kapitel 14.
A.3.1
Ereignisse in Bezug auf den WWW-Dienst Die Tabelle A.1 zeigt eine Liste der Ereignisse für WWW-Dienste. Dabei werden die Ereigniskennung und eine Beschreibung angegeben. Authentifizierung Kennung
Beschreibung
1
Fehler beim Laden der Zuordnungsdatei %1, Fehler %2.
2
Anmeldung fehlgeschlagen für Benutzer %1 : %2.
3
Digestauthentifizierung: ungültige Authentifizierung für Benutzer »%1«, Bereich »%2«.
4
Digestauthentifizierung: unerkannter Benutzer »%1«, Bereich »%2«.
5
Digestauthentifizierung: Authentifizierung angehalten für Benutzer »%1«, Bereich »%2«.
Anhang A • Referenz für den Administrator
425
Protokollierung Kennung
Beschreibung
1
IIS-Protokollierung für %1 wurde abgebrochen, da die Fehlermeldung »Festplattenspeicher voll« aufgetreten ist.
2
Für die IIS-Protokollierung konnte Verzeichnis %1 nicht erstellt werden. Die Daten enthalten Fehlerinformationen.
3
Für die IIS-Protokollierung konnte Datei %1 nicht erstellt werden. Die Daten enthalten Fehlerinformationen.
4
Die IIS-Protokollierung wurde wiederaufgenommen für %1.
5
Für die IIS ODBC-Protokollierung konnte keine Verbindung zur Datenquelle %1 aufgebaut werden. Fehlermeldung [%2].
100
Der Server konnte das Windows-Konto '%1' aufgrund des folgenden Fehlers nicht anmelden: %2 Die Daten enthalten Fehlerinformationen.
101
Der Server konnte den virtuellen Stamm '%1' für das Verzeichnis '%2' aufgrund des folgenden Fehlers nicht hinzufügen: %3 Die Daten enthalten Fehlerinformationen.
102
Der Server konnte ODBC32.DLL für die SQL-Protokollierung nicht laden. Der folgende Fehler ist aufgetreten: %1 Die Daten enthalten Fehlerinformationen.
103
Der Server konnte die ODBC-Datenquelle %1, Tabelle: %2, Benutzername %3 nicht öffnen. Der ODBC-Fehler ist: %4. Die Daten enthalten Fehlerinformationen.
104
Die angegebenen Parameter für die Protokollierung sind zu lang: Feld: %1, angegebene Daten: %2.
105
Der Server konnte die Informationen über das Auffinden von Administrationstools nicht registrieren. Der Server kann möglicherweise nicht vom Administrationstool erkannt werden. Die Daten enthalten Fehlerinformationen.
106
Der InetLog-Kontext konnte nicht erstellt werden. Die Daten enthalten Fehlerinformationen.
107
Fehler bei den Protokollierungsinformationen. Das Protokollobjekt wurde nicht erstellt, da die Konfiguration möglicherweise nicht korrekt ist.
108
Der Server konnte das Verzeichnis %1 der Protokolldatei nicht finden. Die Daten enthalten Fehlerinformationen.
109
Der Server hat die Anforderungsprotokollierung angehalten, da beim Schreiben eines Protokolleintrags ein Fehler aufgetreten ist. Die Daten enthalten Fehlerinformationen. Die Fehlermeldung ist: %1.
110
Der Server hat die Anforderungsprotokollierung fortgesetzt.
426
Windowsereignisse für IIS
Kennung
Beschreibung
111
Der Dienst konnte die Socket-Bibliothek nicht initialisieren. Die Daten enthalten Fehlerinformationen.
112
Der Dienst konnte Modul %1 nicht finden. Die Daten enthalten Fehlerinformationen.
113
Die Bindungsbeschreibung %2 der Instanz %1 ist ungültig.
114
Die sichere Bindungsbeschreibung %2 der Instanz %1 ist ungültig (Hostname ignoriert).
115
Der Dienst konnte Instanz %1 nicht verbinden. Die Daten enthalten Fehlerinformationen.
116
Der Metabasispfad des Dienstes '%1' konnte nicht geöffnet werden. Die Daten enthalten Fehlerinformationen.
Metabasis Kennung
Beschreibung
1
Kein Zugriff auf IIS-Metabasiskonfiguration für Server %1, Instanz %2, Fehler %3.
2
Instanz %2 des Servers %1 antwortet nicht auf Protokollabfrage, Fehler %3.
800
Metadaten wurden nicht initialisiert.
801
Angegebene Metadaten wurden nicht gefunden.
802
Unbekannte Versionsangabe im Speicher der Metadaten.
803
Angegebener Pfad für Metaobjekt wurde nicht gefunden. Das Metaobjekt und die zugeordneten Metadaten wurden ignoriert.
804
Metaobjekt oder Metadaten wurden mehrfach angegeben. Duplikate wurden ignoriert.
805
Es wurden ungültige Metadaten angegeben. Die ungültigen Metadaten wurden ignoriert.
806
Es konnte kein sicherer Kommunikationskanal zu dem Server hergestellt werden.
807
Der Pfad wurde nicht, wie angefordert, in die Zeichenkette eingefügt. Möglicherweise gehören die Daten zu einem Objekt auf einer höheren Ebene als die Zugriffsnummer.
808
Das Attribut METADATA_SECURE kann nicht mit Hilfe der GetDataMethode aus den Daten entfernt werden. Verwenden Sie die DeleteDataMethode, um die sicheren Daten zu entfernen.
809
Das Speichern der Metadaten vor der Sicherungskopie ist fehlgeschlagen. Es wurde eine Sicherungskopie der früheren Version erstellt.
Anhang A • Referenz für den Administrator
427
ODBC-Protokollierung Kennung
Beschreibung
1
Abfrage %1 konnte nicht durchgeführt werden.
2
In dem von Ihnen bearbeiteten Formular muss der Eintrag %1 ausgefüllt werden. Füllen Sie den Eintrag aus, und senden Sie das Formular nochmals ab.
3
Die Abfragedatei %1 konnte nicht geöffnet werden. Die Datei ist möglicherweise nicht vorhanden, oder Sie haben keine ausreichenden Berechtigungen, die Datei zu öffnen.
4
Die Vorlagedatei %1 konnte nicht geöffnet werden. Die Datei ist möglicherweise nicht vorhanden, oder Sie haben keine ausreichenden Berechtigungen, die Datei zu öffnen.
5
In der Vorlagedatei steht ein else-Tag ohne ein passendes if-Tag.
6
In der Vorlagedatei steht ein endif-Tag ohne ein passendes if-Tag.
7
In der Vorlagedatei steht ein Ausdruck mit Parametern unterschiedlichen Typs. Beispielsweise verursacht ein if-Tag, durch das eine Zeichenfolge mit einer Zahl verglichen wird, diesen Fehler.
8
In der Vorlagedatei steht ein Ausdruck mit dem CONTAINS-Operator, bei dem mindestens einer der beiden Parameter keine Zeichenfolge ist. CONTAINS ist nur gültig, wenn Zeichenfolgen verwendet werden.
9
In der Vorlagedatei steht ein Ausdruck, der eine Zeichenfolge mit Anführungszeichen verwendet. Das Anführungszeichen am Ende der Zeichenfolge fehlt jedoch.
10
In der Vorlagedatei steht ein Ausdruck mit einem ungültigen Operator. GT, LT, EQ und CONTAINS sind gültige Operatoren.
11
Die Abfragedatei enthält ein ungültiges Feld %1.
12
Die Abfragedatei muss ein gültiges Datasource:- und SQLStatement:-Feld enthalten.
13
Die Bibliothek odbc32.dll konnte nicht geladen werden, und die Abfrage konnte nicht ausgeführt werden. Stellen Sie sicher, dass ODBC ordnungsgemäß auf dem Server installiert ist.
14
Die angegebene HTTP-Methode wird nicht unterstützt. Es werden nur POST und GET unterstützt.
15
Fehler bei der Durchführung der Abfrage %1.
16
In der IDC-Datei wurde die maximale Anzahl an SQLStatement-Feldern überschritten.
428
Windowsereignisse für IIS
Serverseitige Include-Anweisungen Kennung
Beschreibung
1
Der virtuelle Pfad '%1' kann nicht aufgelöst werden.
2
Fehler bei der Verarbeitung der SSI-Datei '%1'.
3
Ungültiges SSI-Tag.
4
flastmod('%1') kann nicht durchgeführt werden. Win32-Fehlercode = %2.
5
fsize('%1') kann nicht durchgeführt werden. Win32-Fehlercode = %2.
6
Variable '%1' kann nicht gefunden werden.
7
Variable '%1' kann nicht ausgewertet werden.
8
SSI-Feature wird nicht unterstützt.
9
SSI-Verarbeitungsfehler. Datei = '%1'. Win32-Fehlercode = %2.
10
SSI-Datei '%1' wurde erfolgreich verarbeitet.
11
SSI-Datei '%1' konnte nicht verarbeitet werden.
12
CMD '%1' konnte nicht ausgeführt werden. Win32-Fehlercode = %2.
13
Skript '%1' konnte nicht ausgeführt werden. Win32-Fehlercode = %2.
14
ISAPI-Erweiterung '%1' konnte nicht ausgeführt werden.
16
Dieses Dokument wurde an diese Stelle verschoben: %1.
17
Umgebung des untergeordneten Prozesses konnte nicht eingerichtet werden: Win32-Fehlercode = %1.
18
Pipes des untergeordneten Prozesses konnten nicht eingerichtet werden: Win32-Fehlercode = %1.
19
Prozess konnte nicht erstellt werden: Win32-Fehlercode = %1.
20
#EXEC-Befehl hat die zulässige Zeit überschritten.
21
#EXEC ISAPI-Anwendung konnte nicht ausgeführt werden: Win32-Fehlercode = %1.
22
ISAPI-Anwendung hat versucht, diese Adresse zu senden: %1
23
#EXEC '%1' kann nicht ausgeführt werden, weil keine Ausführberechtigung vorhanden ist.
24
'%1' kann nicht verarbeitet werden, weil der Zugriff verweigert wurde.
25
Eine Include-Datei auf dem Server verweist auf sich selbst, oder die maximale Tiefe an Include-Dateien auf dem Server wurde überschritten.
26
Eine nichtunterstützte Option der ServerSupportFunction() wurde durch ISA verwendet.
27
Die CMD-Option ist nicht für #EXEC-Aufrufe aktiviert.
Anhang A • Referenz für den Administrator
Kennung
Beschreibung
28
#EXEC-Aufrufe sind für diesen virtuellen Pfad deaktiviert.
29
Es ist eine #INCLUDE-Kette mit '%1' vorhanden.
429
WWW-Dienste Kennung
Beschreibung
1
Der HTTP-Server konnte die Sicherheitsfunktion nicht initialisieren. Die Daten enthalten Fehlerinformationen.
3
Der HTTP-Server konnte die Socket-Bibliothek nicht initialisieren. Die Daten enthalten Fehlerinformationen.
4
Der HTTP-Server konnte wegen Speichermangel nicht initialisiert werden. Die Daten enthalten Fehlerinformationen.
6
Der HTTP-Server konnte den Hauptverbindungs-Socket nicht erstellen. Die Daten enthalten Fehlerinformationen.
8
Der HTTP-Server konnte kein Clientverbindungsobjekt für den Benutzer am Host %1 erstellen. Die Verbindung zu diesem Benutzer wird beendet. Die Daten enthalten Fehlerinformationen.
14
Die HTTP-Filter-DLL %1 konnte nicht geladen werden. Die Daten enthalten Fehlerinformationen.
16
Innerhalb der konfigurierten Zeitspanne kam vom Skript, das von der URL '%1' mit den Parametern '%2' gestartet wurde, keine Rückmeldung. Der HTTP-Server beendet das Skript.
18
Der HTTP-Server hat einen Fehler festgestellt, während die Datei '%1' auf der Serverseite verarbeitet wurde. Der Fehler ist: '%2'.
19
Der HTTP-Server ist bei der Verarbeitung der ISAPI-Anwendung '%1' auf eine unerwartete Ausnahme gestoßen.
20
Der HTTP-Server konnte die ISAPI-Anwendung '%1' nicht laden. Die Daten enthalten Fehlerinformationen.
21
Eine Include-Datei auf dem Server verweist auf sich selbst oder die maximale Tiefe an Include-Dateien wurde auf dem Server überschritten.
22
Es wurde versucht, den Filter '%1' auf der Serverinstanz zu laden, wofür jedoch eine Filterbenachrichtigung SF_NOTIFY_READ_RAW_DATA notwendig ist. Er muss deshalb als globaler Filter geladen werden.
Tab. A.1: Ereignisse in Bezug auf den WWW-Dienst
430
Windowsereignisse für IIS
Kennung
Beschreibung
23
Aus Kompatibilitätsgründen mit der vorherigen Version von IIS wurde Filter '%1' als globaler Filter von der Registrierung geladen. Sie können den Filter mit dem Internetdienste-Manager bearbeiten, indem Sie ihn von der Registrierdatenbank entfernen und ihn mit dem Internetdienste-Manager als globalen Filter hinzufügen. Filter sind in der Registrierdatenbank unter HKLM\System\CurrentControlSet\Services\W3Svc\Parameters\ Filter DLLs gespeichert.
26
Der Server konnte die Datei %1 wegen fehlender Zugriffsberechtigung nicht lesen.
27
Für den Server wurde keine Lizenz für eine SSL-Verbindung ausgestellt.
28
Der Server erfordert »Dienst beenden« für die Anwendung '%1', da die Anzahl der Out of Process-Komponenten den Grenzwert überschritten hat.
29
Der Server konnte Anwendung '%1' nicht beenden. Fehler '%2'.
30
Der Server konnte Datei %1 nicht lesen. Die Datei ist nicht vorhanden.
31
Der Server konnte Datei %1 nicht lesen. Der Windows 32-Fehler ist %2.
32
Der Server konnte Datei %1 nicht lesen. Die Datei überschreitet die maximal erlaubte Größe von %2.
33
Der Server konnte keine Speicher zum Lesen der Datei %1 zur Verfügung stellen.
34
Der Server konnte PUT bei der URL %1 (Dateiname %2) nicht ausführen. Diese Datei ist verloren gegangen. Es wurde eine Sicherungskopie %3 angefertigt.
35
Der Server konnte PUT auf %1 (Dateiname %2) nicht ausführen.
36
Der Server konnte Anwendung '%1' nicht laden. Fehler '%2'.
37
Out of Process-Anwendung '%1' wurde unerwartet abgebrochen.
201
WAM-Instanz wurde mit Prozess-ID %1 gestartet.
202
WAM-Instanz konnte in Prozess %1 nicht gestartet werden. Die Daten enthalten Fehlerinformationen.
203
WAM-Instanz wurde abgebrochen in Prozess %1.
204
Der HTTP-Server ist bei der Verarbeitung der ISAPI-Anwendung '%1' auf eine unerwartete Ausnahme gestoßen.
205
Der HTTP-Server konnte die ISAPI-Anwendung '%1' nicht laden. Die Daten enthalten Fehlerinformationen.
Tab. A.1: Ereignisse in Bezug auf den WWW-Dienst (Forts.)
Diese Fehlermeldungen werden im Fenster EIGENSCHAFTEN VON EREIGNIS angezeigt, wenn Sie das zugehörige Ereignis in der rechten Spalte des Fensters EREIGNISANZEIGE doppelklicken.
Anhang A • Referenz für den Administrator
431
Die %-Variablen – etwa %1 oder %2 – in der vorherigen Tabelle werden im Fenster EIGENSCHAFTEN VON EREIGNIS durch die entsprechenden Daten ersetzt.
A.3.2
Ereignisse in Bezug auf die FTP-Dienste Auch die FTP-Dienste erzeugen Einträge im Ereignisprotokoll, wenn auch nicht ganz so viele wie die WWW-Dienste. Tabelle A.2 listet die Ereignismeldungen für den FTP-Dienst auf. Kennung
Beschreibung
1
FTP-Server konnte die Sicherheitsfunktion nicht initialisieren. Die Daten enthalten Fehlerinformationen.
3
FTP-Server konnte die Socket-Bibliothek nicht initialisieren. Die Daten enthalten Fehlerinformationen.
4
FTP-Server konnte wegen Speichermangel nicht initialisiert werden. Die Daten enthalten Fehlerinformationen.
5
FTP-Server konnte den FTP-/TCP-Dienst nicht finden. Die Daten enthalten Fehlerinformationen.
6
FTP-Server konnte den Hauptverbindungs-Socket nicht erstellen. Die Daten enthalten Fehlerinformationen.
7
FTP-Server konnte den Hauptverbindungs-Thread nicht erstellen. Die Daten enthalten Fehlerinformationen.
8
FTP-Server konnte keinen Clientarbeitsthread für den Benutzer am Host %1 erstellen. Die Verbindung zu diesem Benutzer wird beendet. Die Daten enthalten Fehlerinformationen.
9
Unerwarteter Fehler bei einem Systemdienstaufruf. Die Daten enthalten Fehlerinformationen.
10
Benutzer %1 am Host %2 hat inaktive Zeit nach %3 Sekunden überschritten.
11
Anonyme Anmeldeanforderung von %1 am Host %2 empfangen.
12
Benutzer-Anmeldeanforderung von %1 am Host %2 empfangen.
13
Fehler beim Anmelden des Benutzers %1. Auf das Basisverzeichnis %2 konnte nicht zugegriffen werden.
14
Dem Benutzer %1 wurde der Zugriff auf das aktuelle Verzeichnis %2 wegen einer Sicherheitsänderung verweigert.
1000
Es konnten keine Daten zur FTP-Leistung gesammelt werden. Der vom Dienst zurückgegebene Fehlercode ist DWORD 0.
Tab. A.2: Ereignisse in Bezug auf die FTP-Dienste
432
Windowsereignisse für IIS
Die %-Variablen – etwa %1 oder %2 – in der vorherigen Tabelle werden im Fenster EIGENSCHAFTEN VON EREIGNIS durch die entsprechenden Daten ersetzt.
A.3.3
Ereignisse in Bezug auf Active Server Pages Wie bereits in der Einleitung zu diesem Anhang angemerkt, werden, sofern die Option AspErrorsToNTLog in der Metabasis nicht gesetzt ist, nicht alle ASPEreignisse in die Protokolldatei geschrieben. Tabelle A.3 listet die Meldungen auf, die sich auf ASP beziehen. Kennung
Beschreibung
100
Nicht genügend Arbeitsspeicher. Erforderlicher Arbeitsspeicher kann nicht reserviert werden.
101
Unerwarteter Fehler. Die Funktion hat | zurückgegeben.
102
Zeichenfolge erwartet. Die Funktion erwartet die Eingabe einer Zeichenfolge.
103
Zahl erwartet. Die Funktion erwartet die Eingabe eines numerischen Wertes.
104
Der Vorgang ist nicht erlaubt.
105
Index außerhalb des zulässigen Bereichs. Ein Arrayindex liegt außerhalb des zulässigen Bereichs.
106
Typ passt nicht. Es wurde ein unbekannter Datentyp gefunden.
107
Stapelüberlauf. Die zu verarbeitenden Daten haben das erlaubte Limit überschritten.
108
Objekt konnte nicht erstellt werden. Beim Erstellen des Objekts '%s' ist ein Fehler aufgetreten.
109
Mitglied nicht gefunden.
110
Unbekannter Name.
111
Unbekannte Schnittstelle.
112
Fehlender Parameter.
113
Timeout für Skript. Das Zeitlimit zum Ausführen eines Skripts wurde überschritten. Sie können das Zeitlimit ändern, indem Sie einen neuen Wert für die Eigenschaft Server.ScriptTimeOut festlegen oder den Wert für ScriptTimeout im Administrationstool von IIS ändern.
114
Objekt nicht im Freethread-Modus. Das Anwendungsobjekt akzeptiert nur Objekte im Freethread-Modus; das Objekt '%s' ist nicht in diesem Modus.
115
Unerwarteter Fehler. In einem externen Objekt ist ein abfangbarer (%X) Fehler aufgetreten. Das Skript kann nicht ausgeführt werden.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages
Anhang A • Referenz für den Administrator
433
Kennung
Beschreibung
116
Skriptbegrenzungszeichen fehlt. Im Skriptblock fehlt das Skriptbegrenzungszeichen (%>).
117
Skriptendzeichen fehlt. Im Skriptblock fehlt das Skriptendzeichen () oder das Endzeichen (>).
118
Objektendzeichen fehlt. Im Objektblock fehlt das Objektendzeichen ( ) oder Endzeichen (>).
119
ClassID- oder ProgID-Attribut fehlt. Die Objektinstanz '|' erfordert eine gültige Klassen-ID oder Programm-ID im Objekttag.
120
Ungültiges RunAt-Attribut. Für das RunAt-Attribut des Skript- oder Objekttags ist nur der Wert 'Server' gültig.
121
Ungültiger Bereich im Objekttag. Die Objektinstanz '|' darf keinen Anwendungs- oder Sitzungsbereich enthalten. Tragen Sie das Objekttag in die Datei global.asa ein, um eine Objektinstanz mit einem Sitzungs- oder Anwendungsbereich zu erstellen.
122
Ungültiger Bereich im Objekttag. Die Objektinstanz '|' muss einen Anwendungs- oder Sitzungsbereich enthalten. Das gilt für alle in der Datei global.asa eingetragenen Objekte.
123
ID-Attribut fehlt. Das erforderliche ID-Attribut des Objekttags ist nicht vorhanden.
124
Sprachattribut fehlt. Das erforderliche Sprachattribut des Skripttags ist nicht vorhanden.
125
Attributendzeichen fehlt. Der Wert des Attributs '|' hat kein Begrenzungszeichen.
126
Eingebundene Datei nicht gefunden. Die eingebundene Datei '|' wurde nicht gefunden.
127
Endzeichen des HTML-Kommentars fehlt. Das Endzeichen für den HTML-Kommentar oder die serverseitige Einbindung fehlt (-->).
128
Attribut Virtual oder File fehlt. Die Angabe der Include-Datei muss ein Attribut Virtuell oder Datei enthalten.
129
Unbekannte Skriptsprache. Die Skriptsprache '|' ist auf dem Server nicht vorhanden.
130
Ungültiges Attribut File. Das Dateiattribut '|' kann nicht mit einem Schrägstrich oder einem umgekehrten Schrägstrich beginnen.
131
Unzulässiger übergeordneter Pfad. Die eingebundene Datei '|' darf kein '..' enthalten, um das übergeordnete Verzeichnis anzugeben.
132
Kompilierungsfehler. Die Active Server Page '|' konnte nicht verarbeitet werden.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
434
Windowsereignisse für IIS
Kennung
Beschreibung
133
Ungültiges ClassID-Attribut. Das Objekttag enthält die ungültige Klassen-ID '|'.
134
Ungültiges ProgID-Attribut. Die Programm-ID '|' des Objekts ist ungültig.
135
Zyklisches Include. Die Datei '|' bindet sich selbst ein (möglicherweise indirekt). Überprüfen Sie eingebundene Dateien auf weitere IncludeAnweisungen.
136
Ungültiger Objektinstanzname. Die Objektinstanz '|' verwendet einen reservierten Namen. Dieser Name wird von systeminternen Objekten von Active Server Pages verwendet.
137
Ungültiges globales Skript. Skriptblöcke müssen eine gültige Prozedur global.asa sein. In der Datei global.asa sind keine Skriptanweisungen innerhalb von <% ... %> erlaubt. Die zulässigen Prozedurnamen sind Application_OnStart, Application_OnEnd, Session_OnStart oder Session_OnEnd.
138
Verschachtelter Skriptblock. Ein Skriptblock kann nicht in einem anderen Skriptblock eingetragen werden.
139
Verschachteltes Objekt. Ein Objekttag kann nicht in einem anderen Objekttag eingetragen werden.
140
Ungültige Befehlsreihenfolge. Der @-Befehl muss der erste Befehl innerhalb der Active Server Page sein.
141
Wiederholung des Page-Befehls. Der @-Befehl kann in der Active Server Page nur einmal verwendet werden.
142
Thread Token-Fehler. Ein Thread Token konnte nicht geöffnet werden.
143
Ungültiger Anwendungsname. Es wurde kein gültiger Anwendungsname gefunden.
144
Initialisierungsfehler. Die Initialisierung der Liste von Objekten, die zu dieser Seite gehören, ist fehlgeschlagen.
145
Neue Anwendung fehlgeschlagen. Die neue Anwendung konnte nicht hinzugefügt werden.
146
Neue Sitzung fehlgeschlagen. Die neue Sitzung konnte nicht hinzugefügt werden.
147
Serverfehler.
148
Der Server ist zu stark belastet.
149
Anwendung wird neu gestartet. Die Anforderung kann nicht verarbeitet werden, während die Anwendung neu gestartet wird.
150
Fehler im Anwendungsverzeichnis. Das Anwendungsverzeichnis konnte nicht geöffnet werden.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
Anhang A • Referenz für den Administrator
435
Kennung
Beschreibung
151
Fehler bei Nachricht über Änderung. Die Nachricht über eine Änderung konnte nicht erstellt werden.
152
Sicherheitsfehler. Beim Verarbeiten von Benutzeranmeldeinformationen ist ein Fehler aufgetreten.
153
Thread-Fehler. Es konnte kein neuer Thread angefordert werden.
154
Fehler beim Schreiben des HTTP-Headers. Die HTTP-Header konnten nicht in den Client Browser geschrieben werden.
155
Fehler beim Schreiben des Seiteninhalts. Der Seiteninhalt konnte nicht in den Client Browser geschrieben werden.
156
Header-Fehler. Die HTTP-Header sind bereits in den Client Browser geschrieben. Änderungen am HTTP-Header müssen vorgenommen werden, bevor der Seiteninhalt geschrieben wird.
157
Pufferung aktiviert. Eine aktivierte Pufferung kann nicht deaktiviert werden.
158
URL nicht vorhanden. Eine URL ist erforderlich.
159
Pufferung deaktiviert. Die Pufferung muss aktiviert sein.
160
Protokollierungsfehler. Eintrag kann nicht ins Protokoll geschrieben werden.
161
Datentypfehler. Eine Variant-Variable konnte nicht in eine Zeichenfolge konvertiert werden.
162
Cookie kann nicht geändert werden. Das Cookie ASPSessionID kann nicht geändert werden, da dieser Name reserviert ist.
163
Ungültige Kommas. Ein Protokolleintrag darf keine Kommas enthalten. Geben Sie ein anderes Trennzeichen ein.
164
Ungültiger Wert für Timeout. Es wurde ein ungültiger Wert für Timeout angegeben.
165
SessionID-Fehler. Eine SessionID-Zeichenfolge kann nicht erstellt werden.
166
Objekt nicht initialisiert. Es wurde auf ein nichtinitialisiertes Objekt zugegriffen.
167
Fehler beim Initialisieren der Sitzung. Beim Initialisieren des Sitzungsobjekts ist ein Fehler aufgetreten.
168
Unzulässige Objektverwendung. Ein systeminternes Objekt kann nicht im Sitzungsobjekt gespeichert werden.
169
Objektinformationen fehlen. Ein Objekt mit fehlenden Informationen kann nicht im Sitzungsobjekt gespeichert werden. Die Informationen zum Threadingmodell für ein Objekt sind erforderlich.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
436
Windowsereignisse für IIS
Kennung
Beschreibung
170
Fehler beim Löschen der Sitzung. Die Sitzung wurde nicht ordnungsgemäß gelöscht.
171
Pfad nicht vorhanden. Der Pfadparameter für die MapPath-Methode muss angegeben werden.
172
Ungültiger Pfad. Der Pfadparameter für die MapPath-Methode muss ein virtueller Pfad sein. Es wurde ein physischer Pfad angegeben.
173
Ungültiges Zeichen. Im Pfadparameter für die MapPath-Methode wurde ein ungültiges Zeichen eingegeben.
174
Ungültige(s) Zeichen. Im Pfadparameter für die MapPath-Methode wurde ein '/' oder '\\' eingegeben.
175
Unzulässige Zeichen. Die Zeichen '..' sind im Pfadparameter für die MapPath-Methode nicht zulässig.
176
Pfad nicht gefunden. Der Pfadparameter für die MapPath-Methode entspricht keinem bekannten Pfad.
177
Server.CreateObject-Fehler.
178
Server.CreateObject-Zugriffsfehler. Server.CreateObject konnte beim Überprüfen der Berechtigungen nicht aufgerufen werden. Der Zugriff auf dieses Objekt wurde verweigert.
179
Fehler beim Initialisieren der Anwendung. Beim Initialisieren des Anwendungsobjekts ist ein Fehler aufgetreten.
180
Unzulässige Objektverwendung. Ein systeminternes Objekt kann nicht im Anwendungsobjekt gespeichert werden.
181
Ungültiges Threadingmodell. Ein Objekt, das das Apartment-Threadingmodell verwendet, kann nicht innerhalb des Anwendungsobjekts gespeichert werden.
182
Objektinformationen fehlen. Ein Objekt mit fehlenden Informationen kann nicht im Anwendungsobjekt gespeichert werden. Die Informationen zum Threadingmodell für das Objekt sind erforderlich.
183
Leerer Cookie-Schlüssel. Ein Cookie mit einem leeren Schlüssel kann nicht gespeichert werden.
184
Cookie-Name fehlt. Für ein Cookie muss ein Name angegeben werden.
185
Standardeigenschaft fehlt. Es wurde keine Standardeigenschaft für das Objekt gefunden.
186
Fehler beim Parsen des Zertifikats.
187
Konflikt beim Hinzufügen eines Objekts. Das Objekt konnte nicht zur Anwendung hinzugefügt werden. Die Anwendung war durch eine andere Anforderung, ein Objekt hinzuzufügen, gesperrt.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
Anhang A • Referenz für den Administrator
437
Kennung
Beschreibung
188
Unzulässige Objektverwendung. Durch Objekttags erstellte Objekte können nicht zur Sitzung hinzugefügt werden.
189
Unzulässige Objektverwendung. Durch Objekttags erstellte Objekte können nicht zur Anwendung hinzugefügt werden.
190
Unerwarteter Fehler. Beim Freigeben eines externen Objekts ist ein abfangbarer Fehler aufgetreten.
191
Unerwarteter Fehler. In der OnStartPage-Methode eines externen Objekts ist ein abfangbarer Fehler aufgetreten.
192
Unerwarteter Fehler. In der OnEndPage-Methode eines externen Objekts ist ein abfangbarer Fehler aufgetreten.
193
OnStartPage fehlgeschlagen. In der OnStartPage-Methode eines externen Objekts ist ein Fehler aufgetreten.
194
OnEndPage fehlgeschlagen. In der OnEndPage-Methode eines externen Objekts ist ein Fehler aufgetreten.
195
Ungültiger Aufruf einer Servermethode. Diese Methode des Serverobjekts kann nicht während Session_OnEnd und Application_OnEnd aufgerufen werden.
197
Unzulässige Objektverwendung. Ein Objekt, das sich dem ApartmentModell entsprechend verhält, kann nicht zum Anwendungsobjekt hinzugefügt werden.
198
Server wird heruntergefahren. Anforderung kann nicht verarbeitet werden.
199
Unzulässige Objektverwendung. JScript-Objekt kann nicht zur Sitzung hinzugefügt werden.
200
Ungültiges Expires-Attribut. Das Ablaufdatum und der Ablaufzeitpunkt liegen außerhalb des zulässigen Bereichs (vor dem 1. Januar 1980 oder nach dem 19. Januar 2038, 3:14:07 GMT).
201
Unbekannte Skriptsprache in der Registrierung. Die in der Registrierung angegebene Skriptsprache '|' ist auf dem Server nicht vorhanden.
202
Codepage fehlt. Das Codepage-Attribut fehlt.
203
Ungültige Codepage. Das angegebene Codepage-Attribut ist ungültig.
205
Nachricht über Änderung. Die Nachricht über eine Änderung konnte nicht erstellt werden.
206
BinaryRead kann nicht aufgerufen werden. Nach Verwendung der Auflistung Request.Form kann BinaryRead nicht aufgerufen werden.
207
Request.Form kann nicht verwendet werden. Nach dem Aufruf von BinaryRead kann die Auflistung Request.Form nicht verwendet werden.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
438
Windowsereignisse für IIS
Kennung
Beschreibung
208
Allgemeine Anforderungsauflistung kann nicht verwendet werden. Nach dem Aufruf von BinaryRead kann die allgemeine Anforderungsauflistung nicht verwendet werden.
209
Unzulässiger Wert für Eigenschaft TRANSACTION. Die Eigenschaft TRANSACTION kann nur die Werte REQUIRED, REQUIRES_NEW, SUPPORTED oder NOT_SUPPORTED annehmen.
210
Methode nicht verfügbar. Diese Methode wurde noch nicht implementiert.
211
Objekt außerhalb des Bereichs. Es wurde auf ein vordefiniertes ASPObjekt Bezug genommen, das nicht länger gültig ist.
212
Puffer kann nicht gelöscht werden. Response.Clear nach Response.Flush ist nicht erlaubt, wenn Clientdebuggen aktiviert ist.
214
Ungültiger Pfadparameter. Der Pfadparameter überschreitet die maximal zulässige Länge.
215
Unzulässiger Wert für Eigenschaft SESSION. Die Eigenschaft SESSION kann nur die Werte WAHR oder FALSCH annehmen.
216
MSDTC-Dienst wird nicht ausgeführt. Webseiten mit Transaktionen können nicht ausgeführt werden, wenn der MSDTC-Dienst nicht aktiv ist.
217
Ungültiger Bereich im Objekttag. Objektbereich muss Seite, Sitzung oder Anwendung sein (Page, Session oder Application).
218
Fehlende LCID. Das LCID-Attribut fehlt.
219
Ungültige LCID. Die angegebene LCID steht nicht zur Verfügung.
220
Anforderungen für GLOBAL.ASA nicht erlaubt. Anforderungen, die mit der URL auf GLOBAL.ASA zeigen, sind nicht erlaubt.
221
Ungültige @-Kommandozuweisung. Die angegebene '|'-Option ist unbekannt oder ungültig.
222
Ungültige Spezifikation der Typbibliothek. METADATA-Tag enthält eine ungültige Typbibliotheksspezifikation.
223
Typbibliothek kann nicht gefunden werden. METADATA-Tag enthält eine Typbibliotheksspezifikation, die nicht mit dem Eintrag in der Registrierung übereinstimmt.
224
Typbibliothek kann nicht geladen werden. Die Typbibliothek aus METADATA-Tag kann nicht geladen werden.
225
Kein Wrapping für Typbibliotheken möglich. Es konnte kein Typbibliothek-Wrapperobjekt aus den Typbibliotheken erstellt werden, die in den METADATA-Tags spezifiziert sind.
226
StaticObjects kann nicht aktualisiert werden. StaticObjects-Auflistung kann nicht zur Laufzeit aktualisiert werden.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
Anhang A • Referenz für den Administrator
439
Kennung
Beschreibung
227
Server.Execute fehlgeschlagen. Der Aufruf zu Server.Execute ist fehlgeschlagen.
228
Server.Execute Fehler. Der Aufruf zu Server.Execute ist fehlgeschlagen, während die Seite geladen wurde.
229
Server.Transfer fehlgeschlagen. Der Aufruf zu Server.Transfer ist fehlgeschlagen.
230
Server.Transfer Fehler. Der Aufruf zu Server.Transfer ist fehlgeschlagen, während die Seite geladen wurde.
231
Server.Execute Fehler. Es wurde eine ungültige URL-Form oder eine voll gekennzeichnete absolute URL verwendet. Verwenden Sie relative URLs.
232
Ungültige Cookie-Spezifikation. METADATA-Tag enthält ein ungültige Cookie-Spezifikation.
233
Cookie-Skriptquelle kann nicht geladen werden. Die Cookie-Skriptquelldatei, die in METADATA-Tag angegeben ist, kann nicht geladen werden.
234
Ungültige Include-Anweisung. Serverseitige Include-Anweisung darf nicht in einem Skriptblock vorhanden sein. Bitte verwenden Sie die SRC= Attribute von dem <SCRIPT>-Tag.
235
Server.Transfer-Fehler. Es wurde eine ungültige URL-Form oder eine voll gekennzeichnete absolute URL verwendet. Verwenden Sie relative URLs.
236
Ungültige Cookie-Spezifikation. METADATA-Tag enthält einen ungültigen oder fehlenden SRC-Parameter.
237
Ungültige Cookie-Spezifikation. METADATA-Tag enthält einen ungültigen oder fehlenden NAME-Parameter.
238
Fehlender Attributwert. Es wurde kein Wert angegeben für das '|' Attribut.
239
Datei kann nicht verarbeitet werden. UNICODE ASP-Dateien werden nicht unterstützt.
240
Skriptmodulausnahme. Skriptmodul: Ausnahme '%X' in '%s' von '%s'.
241
CreateObject-Ausnahme. Das CreateObject von '%s' verursachte Ausnahme %X.
242
Abfrage OnStartPage-Schnittstellenausnahme. Abfrage von den OnStartPage- oder den OnEndPage-Methoden von Objekt '%s' verursachte Ausnahme %X.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
Die Variablen – etwa %1, %2 oder | – werden im Fenster EIGENSCHAFTEN EREIGNIS durch die entsprechenden Daten ersetzt.
VON
440
A.4
Referenz zu Leistungsindikatoren
Referenz zu Leistungsindikatoren Die Leistungsindikatoren lassen sich in acht unterschiedliche Kategorien mit je vier Verfügbarkeitsbereichen unterteilen. Leistungsindikatoren in Bezug auf die Bandbreitennutzung Leistungsindikator
Verfügbarkeit
Aktuell blockierte Async-E/A-Anforderungen
Global, Web, FTP
Gemessene Async-E/A-Bandbreitennutzung
Global, Web
Erlaubte Async-E/A-Anforderungen insgesamt
Global, Web
Blockierte Async-E/A-Anforderungen insgesamt
Global, Web
Abgelehnte Async-E/A-Anforderungen insgesamt
Global, Web
Leistungsindikatoren in Bezug auf den Durchsatz Leistungsindikator
Verfügbarkeit
Bytes empfangen/s
Web, FTP
Bytes gesendet/s
Web, FTP
Bytes/s insgesamt
Web, FTP
Dateien/s
Web
Dateien empfangen/s
Web
Dateien gesendet/s
Web
Dateien empfangen insgesamt
Web, FTP
Dateien gesendet insgesamt
Web, FTP
Dateien übertragen insgesamt
Web, FTP
Leistungsindikatoren in Bezug auf bestimmte Anforderungen und auf Fehler Leistungsindikator
Verfügbarkeit
CGI-Anforderungen/s
Web
Aktuelle CGI-Anforderungen
Web
Aktuelle ISAPI-Erweiterungsanforderungen
Web
Debug-Anforderungen
ASP
DELETE-Anforderungen/s
Web
Skriptlaufzeit-Fehler
ASP
Anhang A • Referenz für den Administrator
441
Leistungsindikator
Verfügbarkeit
ASP-Präprozessor-Fehler
ASP
Skript-Kompilierfehler
ASP
Fehler/s
ASP
GET-Anforderungen/s
Web
HEAD-Anforderungen/s
Web
ISAPI-Erweiterungsanforderungen/s
Web
Maximale Anzahl CGI-Anforderungen
Web
Maximale Anzahl ISAPI-Erweiterungsanforderungen
Web
Fehler: Nicht gefunden/s
Web
Andere Anforderungsmethoden/s
Web
POST-Anforderungen/s
Web
PUT-Anforderungen/s
Web
Eingehende Anforderungen insgesamt (in Byte)
ASP
Ausgehende Anforderungen insgesamt (in Byte)
ASP
Bearbeitungszeit
ASP
Anforderungen-Wartezeit
ASP
Unterbrochene Anforderungen
ASP
Aktuelle Anforderungen
ASP
Fehlgeschlagene Anforderungen insgesamt
ASP
Nicht autorisierte Anforderungen
ASP
Fehler: Nicht gefunden insgesamt
ASP
Anforderungen in der Warteschlange
ASP
Abgelehnte Anforderungen
ASP
Erfolgreiche Anforderungen
ASP
Zeitüberschreitungen von Anforderungen
ASP
Anforderungen insgesamt
ASP
Anforderungen/s
ASP
CGI-Anforderungen insgesamt
Web
DELETE-Anforderungen insgesamt
Web
GET-Anforderungen insgesamt
Web
HEAD-Anforderungen insgesamt
Web
ISAPI-Erweiterungsanforderungen insgesamt
Web
Anforderungsmethoden insgesamt
Web
442
Referenz zu Leistungsindikatoren
Leistungsindikator
Verfügbarkeit
Anforderungsmethoden insgesamt/s
Web
Fehler: Nicht gefunden insgesamt
Web
Andere Anforderungsmethoden insgesamt
Web
POST-Anforderungen insgesamt
Web
PUT-Anforderungen insgesamt
Web
TRACE-Anforderungen insgesamt
Web
TRACE-Anforderungen/s
Web
Leistungsindikatoren in Bezug auf Verbindungen und Benutzer Leistungsindikator
Verfügbarkeit
Anonyme Benutzer/s
Web
Verbindungsversuche/s
Web
Aktuelle Anonyme Benutzer
Web, FTP
Aktuelle Verbindungen
Web, FTP
Aktuelle Nicht-Anonyme Benutzer
Web, FTP
Maximale Anzahl Anonymer Benutzer
Web, FTP
Maximale Anzahl Verbindungen
Web, FTP
Maximale Anzahl Nicht-Anonymer Benutzer
Web, FTP
Gesamtzahl Anonymer Benutzer
Web, FTP
Verbindungsversuche insgesamt
Web, FTP
Anmeldeversuche insgesamt
Web, FTP
Gesamtzahl Nicht-Anonymer Benutzer
Web, FTP
Leistungsindikatoren in Bezug auf Zwischenspeicherung und Speichernutzung Leistungsindikator
Verfügbarkeit
Cache-Leerungen
Global
Cache-Treffer
Global
Cache-Treffer %
Global
Cache-Fehltreffer
Global
Zwischengespeicherte Dateihandles
Global
Verzeichnislisten
Global
Reservierter Speicher
ASP
Anhang A • Referenz für den Administrator
Leistungsindikator
443
Verfügbarkeit
Objekte
Global
Script-Engines im Cache
ASP
Vorlagen im Cache
ASP
Trefferanteil im Vorlagen-Cache
ASP
Vorlagen-Meldungen
ASP
Leistungsindikatoren zu Sitzungen Leistungsindikator
Verfügbarkeit
Sitzungsdauer
ASP
Sitzungen
ASP
Zeitüberschreitungen von Sitzungen
ASP
Sitzungen insgesamt
ASP
Leistungsindikatoren für Transaktionen Leistungsindikator
Verfügbarkeit
Abgebrochene Transaktionen
ASP
Durchgeführte Transaktionen
ASP
Transaktionen in Bearbeitung
ASP
Transaktionen insgesamt
ASP
Transaktionen/s
ASP
Tab. A.4: Verfügbarkeit von Leistungsindikatoren
Es gibt noch einen weiteren Leistungsindikator, der sich auf den Neustart bezieht. Er heißt »Betriebszeit des Dienstes« und ist für Web- und FTP-Dienste verfügbar.
A.4.1
Beschreibungen der Leistungsindikatoren Aktuell blockierte Async-E/A-Anforderungen. Aktuelle Anzahl der Anforderungen, die vorübergehend durch die Einstellung der Bandbreitenbegrenzung blockiert werden. Gemessene Async-E/A-Bandbreitennutzung. Die Anzahl der Bytes, die vom Webserver empfangen und gesendet werden, wobei für einen Zeitraum von einer Minute ein Durchschnittswert erstellt wird.
444
Referenz zu Leistungsindikatoren
Erlaubte Async-E/A-Anforderungen insgesamt. Die Anzahl der Benutzeranforderungen, die durch den WWW-Dienst und FTP-Dienst seit dem Starten der Dienste zugelassen wurden. Blockierte Async-E/A-Anforderungen insgesamt. Die Gesamtzahl der Anforderungen, die seit dem Dienststart vorübergehend durch die Einstellung der Bandbreitenbegrenzung blockiert wurden. Abgelehnte Async-E/A-Anforderungen insgesamt. Die Gesamtzahl der (aufgrund der Bandbreiteneinstellungen) zurückgewiesenen Benutzeranforderungen seit Starten des Dienstes. Bytes empfangen/s. Die Geschwindigkeit, mit der Daten vom Dienst auf der Anwendungsschicht empfangen werden, Protokollheader und Steuerungsbytes nicht eingeschlossen. Bytes gesendet/s. Die Geschwindigkeit, mit der Daten vom Dienst gesendet werden. Bytes/s insgesamt. Die Rate, mit der alle Bytes vom WWW-Dienst übertragen werden Dateien/s. Die Häufigkeit, mit der Dateien seit dem Start des WWW-Dienstes übertragen wurden. Dateien empfangen/s. Die Anzahl der Dateien, die im Durchschnitt vom WWWDienst seit dem Start des Dienstes pro Sekunde empfangen wurden. Dateien gesendet/s. Die Anzahl der Dateien, die im Durchschnitt vom WWWDienst seit dem Start des Dienstes pro Sekunde gesendet wurden. Dateien empfangen insgesamt. Die Gesamtzahl der vom WWW-Dienst seit dem Start des Dienstes empfangenen Dateien. Dateien gesendet insgesamt. Die Gesamtzahl der vom WWW-Dienst seit dem Start des Dienstes gesendeten Dateien. Dateien übertragen insgesamt. Die Gesamtzahl der vom WWW-Dienst seit dem Start des Dienstes übertragenen Dateien. Dateien insgesamt ist die Summe aus Dateien gesendet insgesamt und Dateien empfangen insgesamt. CGI-Anforderungen/s. Die Anzahl der CGI-Anforderungen, die vom WWWDienst pro Sekunde gleichzeitig bearbeitet werden. Aktuelle CGI-Anforderungen. Aktuelle Anzahl der CGI-Anforderungen, die vom Dienst gleichzeitig bearbeitet werden. Aktuelle ISAPI-Erweiterungsanforderungen. Aktuelle Anzahl der ISAPIErweiterungsanforderungen, die vom Dienst gleichzeitig bearbeitet werden. Debug-Anforderungen. Die Anzahl der Anforderungen zum Debuggen eines Dokuments.
Anhang A • Referenz für den Administrator
445
DELETE-Anforderungen/s. Die Anzahl der HTTP-Anforderungen, die pro Sekunde mit der DELETE-Methode gestellt werden. Skriptlaufzeit-Fehler. Die Anzahl der Anforderungen, die aufgrund von Laufzeitfehlern fehlgeschlagen sind. ASP-Präprozessor-Fehler. Die Anzahl der Anforderungen, die aufgrund von Präprozessor-Fehlern fehlgeschlagen sind. Skript-Kompilierfehler. Die Gesamtzahl der Anforderungen, die aufgrund von Skript-Kompilierfehlern fehlgeschlagen sind. Fehler/s. Die Anzahl der Fehler pro Sekunde. GET-Anforderungen/s. Die Anzahl der HTTP-Anforderungen, die pro Sekunde mit der GET-Methode gestellt werden. HEAD-Anforderungen/s. Die Anzahl der HTTP-Anforderungen, die pro Sekunde mit der HEAD-Methode gestellt werden. ISAPI-Erweiterungsanforderungen/s. Die Anzahl der ISAPI-Erweiterungsanforderungen, die vom WWW-Dienst pro Sekunde gleichzeitig bearbeitet werden. Maximale Anzahl CGI-Anforderungen. Die größte Anzahl von CGI-Anforderungen, die vom WWW-Dienst seit dem Start des Dienstes gleichzeitig bearbeitet wurden. Maximale Anzahl ISAPI-Erweiterungsanforderungen. Die größte Anzahl von ISAPI-Erweiterungsanforderungen, die vom WWW-Dienst seit dem Start des Dienstes gleichzeitig bearbeitet wurden. Fehler: Nicht gefunden/s. Die Anzahl von Fehlern, die pro Sekunde auf Anforderungen zurückzuführen sind, die vom Server nicht erfüllt werden konnten, weil das angeforderte Dokument nicht gefunden werden konnte. Andere Anforderungsmethoden/s. Die Anzahl der HTTP-Anforderungen, die pro Sekunde gestellt werden und nicht die Methode GET, POST, PUT, DELETE, TRACE oder HEAD verwenden. POST-Anforderungen/s. Die Anzahl von HTTP-Anforderungen, die pro Sekunde mit der POST-Methode erfolgen. PUT-Anforderungen/s. Die Anzahl von HTTP-Anforderungen, die pro Sekunde mit der PUT-Methode gestellt werden. Eingehende Anforderungen insgesamt (in Byte). Die Gesamtgröße aller Anforderungen (in Byte). Ausgehende Anforderungen insgesamt (in Byte). Die Gesamtgröße aller an Clients gesendeten Antworten (in Byte). Bearbeitungszeit. Die Anzahl der Millisekunden, die zur Ausführung der letzten Anforderung benötigt wurden.
446
Referenz zu Leistungsindikatoren
Anforderungen-Wartezeit. Die Anzahl der Millisekunden, die die letzte Anforderung in der Warteschlange verblieben ist. Unterbrochene Anforderungen. Die Anzahl der Anforderungen, bei denen aufgrund von Kommunikationsfehlern die Verbindung getrennt wurde. Aktuelle Anforderungen. Die Anzahl der Anforderungen, die zurzeit ausgeführt werden. Fehlgeschlagene Anforderungen insgesamt. Die Gesamtzahl der Anforderungen, die aufgrund von Fehlern, fehlgeschlagener Autorisierung und Ablehnungen fehlgeschlagen sind. Nicht autorisierte Anforderungen. Die Anzahl der Anforderungen, die aufgrund unzureichender Zugriffsrechte fehlgeschlagen sind. Fehler: Nicht gefunden insgesamt. Die Anzahl der Anforderungen für Dateien, die nicht gefunden wurden. Anforderungen in der Warteschlange. Die Anzahl der Anforderungen, die sich in der Warteschlange für die Verarbeitung durch den Dienst befinden. Abgelehnte Anforderungen. Die Gesamtzahl der Anforderungen, die nicht ausgeführt wurden, da die Ressourcen für ihre Verarbeitung nicht ausreichten. Erfolgreiche Anforderungen. Die Anzahl der Anforderungen, die erfolgreich ausgeführt wurden. Zeitüberschreitungen von Anforderungen. Die Anzahl der Anforderungen, für die eine Zeitüberschreitung eingetreten ist. Anforderungen insgesamt. Die Gesamtzahl der Anforderungen, die empfangen wurden, seitdem der Dienst gestartet wurde. Anforderungen/s. Die Anzahl der Anforderungen, die pro Sekunde ausgeführt werden. CGI-Anforderungen insgesamt. Die Gesamtzahl der CGI-Anforderungen, die seit dem Start des Dienstes ausgeführt worden sind. DELETE-Anforderungen insgesamt. Die Anzahl der HTTP-Anforderungen mit der DELETE-Methode. GET-Anforderungen insgesamt. Die Gesamtzahl der HTTP-Anforderungen mit der GET-Methode, die vom Dienst empfangen wurden. HEAD-Anforderungen insgesamt. Die Gesamtzahl der HTTP-Anforderungen mit der HEAD-Methode, die vom Dienst empfangen wurden. ISAPI-Erweiterungsanforderungen insgesamt. Die Gesamtzahl der HTTPISAPI-Erweiterungsanforderungen, die vom Dienst empfangen wurden.
Anhang A • Referenz für den Administrator
447
Anforderungsmethoden insgesamt. Die Gesamtzahl der Anforderungen mit den Methoden HTTP GET, POST, PUT, DELETE, TRACE, HEAD oder anderen Methoden. Anforderungsmethoden insgesamt/s. Die Anzahl der HTTP-Anforderungen, die pro Sekunde gestellt werden und die Methoden GET, POST, PUT, DELETE, TRACE oder HEAD verwenden. Fehler: Nicht gefunden insgesamt. Die Anzahl der Anforderungen, die vom WWW-Dienst nicht erfüllt werden konnten, weil das angeforderte Dokument nicht gefunden werden konnte Andere Anforderungsmethoden insgesamt. Die Anzahl der HTTP-Anforderungen, die nicht die Methode GET, POST, PUT, DELETE, TRACE oder HEAD verwenden. POST-Anforderungen insgesamt. Die Anzahl der HTTP-Anforderungen mit der POST-Methode. PUT-Anforderungen insgesamt. Die Anzahl der HTTP-Anforderungen mit der PUT-Methode. TRACE-Anforderungen insgesamt. Die Anzahl der HTTP-Anforderungen mit der TRACE-Methode. TRACE-Anforderungen/s. Die Anzahl der HTTP-Anforderungen, die pro Sekunde mit der TRACE-Methode gestellt werden. Anonyme Benutzer/s. Die Anzahl der Benutzer, die pro Sekunde mithilfe des WWW-Dienstes eine anonyme Verbindung herstellen. Verbindungsversuche/s. Die Häufigkeit, mit der Verbindungsversuche zum WWW-Dienst pro Sekunde unternommen werden. Aktuelle Anonyme Benutzer. Die Anzahl der Benutzer, die derzeit eine anonyme Verbindung zum WWW-Dienst oder FTP-Dienst hergestellt haben. Aktuelle Verbindungen. Die aktuelle Anzahl der mit dem WWW-Dienst oder FTP-Dienst hergestellten Verbindungen. Aktuelle Nicht-Anonyme Benutzer. Die Anzahl der Benutzer, die derzeit eine nicht-anonyme Verbindung zum WWW-Dienst oder FTP-Dienst hergestellt haben. Maximale Anzahl Anonymer Benutzer. Die maximale Anzahl der Benutzer, die gleichzeitige anonyme Verbindungen zum WWW-Dienst oder FTP-Dienst (seit dem Start des Dienstes) hergestellt haben. Maximale Anzahl Verbindungen. Die höchste Zahl gleichzeitiger Verbindungen, die mit dem WWW-Dienst oder FTP-Dienst seit dem Start des Dienstes hergestellt worden sind.
448
Referenz zu Leistungsindikatoren
Maximale Anzahl Nicht-Anonymer Benutzer. Die maximale Anzahl der Benutzer, die gleichzeitige nicht-anonyme Verbindungen zum WWW-Dienst oder FTP-Dienst hergestellt haben. Gesamtzahl Anonymer Benutzer. Die Gesamtzahl der Benutzer, die eine anonyme Verbindung mit dem WWW-Dienst oder FTP-Dienst hergestellt haben. Verbindungsversuche insgesamt. Die Gesamtzahl der Versuche, die seit dem Starten des Dienstes gezählt worden sind, um eine Verbindung mit dem WWWDienst oder FTP-Dienst herzustellen. Anmeldeversuche insgesamt. Die Gesamtzahl der erfolgreichen Anmeldungen beim WWW-Dienst oder FTP-Dienst seit dem Start des Dienstes. Gesamtzahl Nicht-Anonymer Benutzer. Die Gesamtzahl der Benutzer, die eine nicht-anonyme Verbindung mit dem WWW-Dienst oder FTP-Dienst (seit dem Start des Dienstes) hergestellt haben. Cache-Leerungen. Die Häufigkeit, mit der seit dem Starten des Dienstes der Cache insgesamt geleert worden ist. Cache-Treffer. Die Häufigkeit, mit der seit dem Starten des Dienstes eine Dateiöffnung, eine Verzeichnisliste oder die Anforderung eines dienstspezifischen Objekts im IIS-Cache gefunden wurde. Cache-Treffer %. Verhältnis der Cache-Treffer zu allen Cache-Anforderungen. Cache-Fehltreffer. Die Häufigkeit, mit der seit dem Start des Dienstes eine Dateiöffnung, eine Verzeichnisliste oder die Anforderung eines dienstspezifischen Objekts nicht im Cache gefunden wurde. Zwischengespeicherte Dateihandles. Aktuelle Anzahl der geöffneten Dateihandles, die von allen IIS-Diensten zwischengespeichert werden. Verzeichnislisten. Aktuelle Anzahl von zwischengespeicherten Verzeichnislisten, die von allen IIS-Diensten zwischengespeichert werden. Reservierter Speicher. Der Gesamtumfang des Speichers (in Byte), der zurzeit durch Active Server Pages reserviert ist. Objekte. Aktuelle Anzahl der von allen IIS-Diensten zwischengespeicherten Objekte. Skript-Engines im Cache. Die Anzahl der Skriptmodule im Cache. Vorlagen im Cache. Die Anzahl der zurzeit im Cache zwischengespeicherten Vorlagen. Trefferanteil im Vorlagen-Cache. Der Prozentsatz der Anforderungen, die im Vorlagen-Cache gefunden wurden. Vorlagen-Meldungen. Die Anzahl der Vorlagen im Cache, die aufgrund einer Änderungsbenachrichtigung ungültig geworden sind.
Anhang A • Referenz für den Administrator
449
Sitzungsdauer. Die Anzahl der Millisekunden, die die letzte Sitzung gedauert hat. Sitzungen. Die Anzahl der Sitzungen, die durch den Dienst verarbeitet werden. Zeitüberschreitungen von Sitzungen. Die Anzahl der Sitzungen, für die eine Zeitüberschreitung eingetreten ist. Sitzungen insgesamt. Die Gesamtzahl der Sitzungen seit dem Starten des Dienstes. Abgebrochene Transaktionen. Die Anzahl der abgebrochenen Transaktionen. Durchgeführte Transaktionen. Die Anzahl der bestätigten oder abgeschlossenen Transaktionen. Transaktionen in Bearbeitung. Die Anzahl der gegenwärtig bearbeiteten Transaktionen. Transaktionen insgesamt. Die Gesamtzahl der begonnenen Transaktionen seit Starten des Dienstes. Transaktionen/s. Die Anzahl der pro Sekunde begonnenen Transaktionen.
A.5
Referenz zu Timeouts Timeoutwerte ermöglichen dem Server die Festlegung, wie lange bestimmte Serverressourcen bestimmten Tasks oder Clients zugeordnet werden. In Tabelle A.5 sind die verschiedenen Timeoutwerte in IIS sowie deren Einstellmöglichkeiten aufgeführt. Wenn in der Spalte »Im Snap-In verfügbar?« der Wert Nein angegeben ist, müssen Sie den Timeout in der Metabasis einstellen. Timeout
Standardwert (in Sekunden)
Im Snap-In verfügbar?
AspScriptTimeout
90
Ja
AspSessionTimeout
1200
Ja
ConnectionTimeout
900
Ja
CGITimeout
300
Ja
ServerListenTimeout
12
Nein
PoolIdcTimeout
30
Nein
AspQueueTimeout
-1 (kein Timeout)
Nein
CpuLimitLogEvent
Benutzerdefinierter Prozentwert
Ja
CpuLimitPriority
150% des Wertes von CpuLimitLogEvent
Ja
Tab. A.5: Timeouts für die Ressourcenzuweisung
450
Referenz zu den Protokollierungseigenschaften
Timeout
Standardwert (in Sekunden)
Im Snap-In verfügbar?
CpuLimitProcStop
200% des Wertes von CpuLimitLogEvent
Ja
CpuLimitPause
0 (unbegrenzt)
Nein
Tab. A.5: Timeouts für die Ressourcenzuweisung (Forts.)
Es gibt außerdem drei IIS-Neustart-Timeouts, die in Tabelle A.6 gezeigt sind. Timeout
Standardwert (in Sekunden)
Stop
60
Restart
20
Reboot
0
Tab. A.6: Neustart-Timeouts
A.6
Referenz zu den Protokollierungseigenschaften Tabelle A.7 zeigt die Definitionen der Protokollierungseigenschaften und deren Werte. Dabei ist nur das Protokoll W3C-erweitert berücksichtigt. Präfix
Bedeutung
s-
Serveraktionen
c-
Clientaktionen
cs-
Client-zu-Server-Aktionen
sc-
Server-zu-Client-Aktionen
Feld
Angezeigt als
Definition
Datum
date
Das Datum, an dem die Aktivität aufgetreten ist.
Zeit
time
Die Zeit, zu der die Aktivität aufgetreten ist.
Client-IP-Adresse
c-ip
Die IP-Adresse des Clients, der auf den Server zugegriffen hat.
Benutzername
c-username
Der Name des authentifizierten Benutzers, der auf den Server zugegriffen hat. Anonyme Benutzer sind hier nicht eingeschlossen; diese werden durch einen Bindestrich dargestellt.
Tab. A.7: Definitionen der Protokolliereigenschaften für das Format W3C-erweitert.
Anhang A • Referenz für den Administrator
451
Feld
Angezeigt als
Definition
Dienstname und Instanznummer
s-sitename
Der auf dem Clientcomputer ausgeführte Internetdienst und die Instanznummer.
Servername
s-computername
Der Name des Servers, auf dem der Protokolleintrag generiert wurde.
Server-IP
s-ip
Die IP-Adresse des Servers, auf dem der Protokolleintrag generiert wurde.
Methode
cs-method
Die Aktion, die der Client auszuführen versucht hat (zum Beispiel die Ausführung der GET-Methode).
URI-Stamm
cs-uri-stem
Die Ressource, auf die zugegriffen wurde, z.B. Default.htm.
URI-Abfrage
cs-uri-query
Die Abfragen, falls zutreffend, die der Client auszuführen versuchte.
Http-Status
sc-status
Der Status der Aktion in HTTP-Terminologie.
Win32-Status
sc-win32-status
Der Status der Aktion in der von Windows 2000 verwendeten Terminologie.
Bytes gesendet
sc-bytes
Die Anzahl der vom Server gesendeten Bytes.
Bytes empfangen
cs-bytes
Die Anzahl der vom Server empfangenen Byte.
Serveranschluss
s-port
Die Anschlussnummer, mit der der Client verbunden ist.
Zeitdauer
time-taken
Die Zeitspanne, die für die Aktion benötigt wurde.
Protokollversion
cs-protocol
Die Protokollversion (HTTP, FTP), die vom Client verwendet wird. Für HTTP ist dies entweder HTTP 1.0 oder HTTP 1.1.
Benutzeragent
cs(User-Agent)
Der auf dem Client verwendete Browser.
Cookie
cs(Cookie)
Der Inhalt des gesendeten oder empfangenen Cookies, falls vorhanden.
URI-Referenz
cs(Referer)
Die von dem Benutzer zuvor besuchte Site. Diese Site verfügte über einen Hyperlink zu der aktuellen Site.
Prozesstyp
s-proc-type
Der Typ des Prozesses, der das Ereignis ausgelöst hat.
Prozessereignis
s-
Das ausgelöste Ereignis.
Tab. A.7: Definitionen der Protokolliereigenschaften für das Format W3C-erweitert. (Forts.)
452
Referenz zu den Protokollierungseigenschaften
Feld
Angezeigt als
Definition
Benutzerzeit insgesamt
s-user-time
Benutzerzeit insgesamt
Kernelzeit insgesamt
s-kernel-time
Kernelzeit insgesamt.
Seitenfehler insgesamt
s-page-faults
Die Gesamtzahl der Speicherverweise, die zu Speicherseitenfehlern führten.
Prozesse insgesamt
s-total-procs
Die Gesamtzahl der CGI- und Out-ofProcess-Anwendungen, die während des aktuellen Intervalls erstellt wurden.
Aktive Prozesse
s-active-procs
Die Gesamtzahl der CGI- und Out-ofProcess-Anwendungen, die während der Aufzeichnung des Protokolls ausgeführt wurden.
Beendete Prozesse insgesamt
s-stopped-procs
Die Gesamtzahl der CGI- und Out-ofProcess-Anwendungen, die während des aktuellen Intervalls aufgrund von Prozessbeschränkungen beendet wurden.
Prozesstyp
s-proc-type
Der Typ des Prozesses, der das Ereignis ausgelöst hat.
Tab. A.7: Definitionen der Protokolliereigenschaften für das Format W3C-erweitert. (Forts.)
Tabelle A.8 zeigt jene Ereignisse an, die nur einen Wert und eine Bedeutung haben (d.h. die Spalten »Wert« und »angezeigt als« sind hier identisch). Wert
Bedeutung
Site-Stop
Die Ausführung der Website wurde aus unbestimmtem Grund beendet.
Site-Start
Die Website wurde gestartet oder erneut gestartet.
Site-Pause
Die Ausführung der Website wurde angehalten.
Periodic-Log
Hierbei handelt es sich um einen regelmäßig definierten Protokolleintrag; das entsprechende Intervall wurde vom Administrator festgelegt.
Interval-Start
Das Rücksetzungsintervall hat angefangen.
Interval-End
Der Wert für das Zurücksetzungsintervall wurde erreicht und zurückgesetzt.
Interval-Change
Der Websiteadministrator hat den Wert für das Zurücksetzungsintervall geändert.
Tab. A.8: Ereignisse mit nur einem Wert und einer Bedeutung.
Anhang A • Referenz für den Administrator
453
Wert
Bedeutung
Log-Change-Int/ Start/Stop
Eines der folgenden Ereignisse ist eingetreten: das Protokollintervall wurde geändert, ein Intervallereignis ist eingetreten, oder die Site wurde entweder beendet, gestartet oder angehalten.
Eventlog-Limit
Für die Website wurde ein Ereignisprotokoll erstellt, da eine CGIoder Out-of-Process-Anwendung den vom Administrator festgelegten Ereignisprotokollgrenzwert erreicht hat.
Priority-Limit
In der Website wurde für eine CGI- oder Out-of-Process-Anwendung niedrige Priorität festgelegt, da der vom Administrator festgelegte Grenzwert für niedrige Priorität erreicht wurde.
Process-StopLimit
In der Website wurde eine CGI- oder Out-of-Process-Anwendung beendet, da der vom Administrator festgelegte Grenzwert für Prozessbeendigung erreicht wurde.
Site-Pause-LimitReset
In der Website wurde eine CGI- oder Out-of-Process-Anwendung angehalten, da der vom Administrator festgelegte Grenzwert für das Anhalten der Site erreicht wurde.
Eventlog-LimitReset
Der Wert für das Zurücksetzungsintervall wurde erreicht, oder Eventlog-Limit wurde manuell zurückgesetzt.
Priority-LimitReset
Der Wert für das Zurücksetzungsintervall wurde erreicht, oder Priority-Limit wurde manuell zurückgesetzt.
Process-StopLimit-Reset
Der Wert für das Zurücksetzungsintervall wurde erreicht, oder Process-Stop-Limit wurde manuell zurückgesetzt.
Site-Pause-Limit
Der Wert für das Zurücksetzungsintervall wurde erreicht, oder Site-Pause-Limit wurde manuell zurückgesetzt.
Tab. A.8: Ereignisse mit nur einem Wert und einer Bedeutung. (Forts.)
A.7
Referenz zur Umleitung IIS bietet Ihnen die Möglichkeit, eine Benutzeranforderung an eine andere URL umzuleiten, falls die angeforderte URL nicht mehr vorhanden ist. Natürlich sind auch andere Anwendungsmöglichkeiten für die Umleitung denkbar. Tabelle A.9 zeigt die sechs Umleitungsvariablen, die zur Übergabe von Teilen der ursprünglichen URL an die Ziel-URL verwendet werden. Variable
Beschreibung
$S
Übergibt das Suffix der angeforderten URL. Das Suffix ist derjenige Teil der ursprünglichen URL, der verbleibt, nachdem der umgeleitete Teil der URL ersetzt wurde.
$P
Übergibt die Parameter aus der ursprünglichen URL.
Tab. A.9: Umleitungsvariablen
454
Referenz zur Umleitung
Variable
Beschreibung
$Q
Übergibt sowohl das Fragezeichen als auch die Parameter aus der ursprünglichen URL.
$V
Übergibt die angeforderte URL ohne den Servernamen.
$0 to $9
Übergibt den Teil der angeforderten URL, der dem angegebenen Platzhalter entspricht.
!
Keine Umleitung.
Tab. A.9: Umleitungsvariablen
Beispiele •
$S. Wenn die ursprüngliche Anforderung http://localhost/default.htm lautete, dann ist das Suffix default.htm.
•
$P. Wenn die ursprüngliche Anforderung www.gkcomput.com?username=gobrien lautete, dann wird der Parameter username=gobrien übergeben.
•
$Q. Wenn wir das obige Beispiel weiter verwenden, dann würde der übergebene Parameter hier ?username=gobrien sein.
•
$V. Im Falle einer Anforderung des URL //localhost/scripts/adrot.asp würde hiermit die Zeichenkette /scripts/adrot.asp übergeben.
Anhang B Referenz für IIS Admin Objects B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8 B.9 B.10 B.11 B.12 B.13 B.14 B.15 B.16 B.17 B.18 B.19 B.20 B.21 B.22 B.23
IIsCertMapper IIsCompressionSchemes IIsCompressionScheme IIsComputer IIsCustomLogModule IIsFilter IIsFilters IIsFtpInfo IIsFtpServer IIsFtpService IIsFtpVirtualDir IIsIPSecurity IIsLogModule IIsLogModules IIsMimeMap IIsMimeType IIsWebDirectory IIsWebFile IIsWebInfo IIsWebServer IIsWebService IIsWebVirtualDir Konstanten
456 460 461 462 467 468 469 470 471 474 476 477 482 483 484 484 486 495 496 497 502 506 509
456
IIsCertMapper
In diesem Anhang finden Sie alle notwendigen Informationen zu IIS Admin Objects.
B.1
IIsCertMapper Mit Hilfe des Objekts IIsCertMapper werden Windows-Benutzerkonten Zertifikate zugeordnet. IIsCertMapper ist ein ADSI-Objekt. ADsPath IIS://computername/W3SVC/n/IIsCertMapper
In ADsPath werden zwei Variablen verwendet. computername ist der Name des Computers, auf dem das Objekt liegt, n die Anzahl der Dienste, auf die Sie sich beziehen. Syntax varRückgabe = IIsCertMapper.methode
Die Variable varRückgabe enthält den Rückgabewert der Methode. methode ist die gewählte Methode. Das Objekt IISCertMapper kann mit den in den folgenden Abschnitten aufgelisteten Methoden arbeiten. CreateMapping Mit dieser Methode wird einem Windows-Konto ein Zertifikat zugeordnet. Syntax IIsCertMapper.CreateMapping vCert, strAcct, strPasswd, strName, boolEnabled
vCert enthält das Zertifikat. strAcct enthält die Zeichenfolge für das WindowsKonto. strPasswd enthält die Zeichenfolge für das Kennwort. strName enthält den angezeigten Namen für das Konto. boolEnabled legt für die Aktivierung der Zuordnung TRUE und für die Deaktivierung der Zuordnung FALSE fest. Beispiel <% Dim objCert, strCert strCert = Request.ClientCertificate("CERTIFICATE") Set objCert = GetObject("IIS://ADsPath../IIsCertMapper") objCert.CreateMapping strCert, _ "MEINKTO", "MEINPASS", "Mein Name", True %>
Anhang B • Referenz für IIS Admin Objects
457
DeleteMapping Mit dieser Methode wird eine vorhandene Zertifikatszuordnung gelöscht. Es gibt vier Möglichkeiten, um nach einer Zuordnung zu suchen: Suche nach Zertifikat, nach Name, nach Windows-Konto und nach numerischem Zeichenfolgenindex. Syntax IIsCertMapper.DeleteMapping suchMethode, strKey
suchMethode bezeichnet die Suchmethode für die Zuordnung. Sie enthält einen von vier gültigen ganzzahligen Werten: •
1. Suche nach Zertifikat
•
2. Suche nach Name
•
3. Suche nach Windows-Konto
•
4. Suche nach numerischem Zeichenfolgenindex
strKey bezeichnet die Zeichenkette, die bei der durch suchMethode festgelegten Suche benutzt wird. Ist beispielsweise die Suchmethode 2 (Name) gewählt, dann enthält strKey den zu suchenden Namen. Beispiel <% Dim objCert Set objCert = GetObject("IIS://ADsPath../IIsCertMapper")_ objCert.DeleteMapping 3, "meinKto" %>
GetMapping Mit dieser Methode werden ein Zertifikat und die Zuordnungsdaten von einer vorhandenen Zertifikatszuordnung abgerufen. Es gibt vier Möglichkeiten, um nach einer Zuordnung zu suchen: Suche nach Zertifikat, nach Name, nach Windows-Konto und nach numerischem Zeichenfolgenindex. Die abgerufene Zuordnung wird in Parametervariablen zurückgegeben, die von Ihnen bereitgestellt wurden. Syntax IIsCertMapper.GetMapping suchMethode, strKey, vCert, strAcct, strPasswd, strName, boolEnabled
suchMethode bezeichnet die Suchmethode für die Zuordnung. Sie enthält einen von vier gültigen ganzzahligen Werten: •
1. Suche nach Zertifikat
•
2. Suche nach Name
458
IIsCertMapper
•
3. Suche nach Windows-Konto
•
4. Suche nach numerischem Zeichenfolgenindex
strKey bezeichnet die Zeichenkette, die bei der durch suchMethode festgelegten Suche benutzt wird. vCert enthält das zurückgegebene Zertifikat. strAcct enthält den zurückgegebenen Namen des Windows-Kontos. strPasswd enthält das zurückgegebene Kennwort. strName enthält den zurückgegebenen Namen. boolEnabled empfängt den zurückgegebenen Wert TRUE für eine aktivierte Zuordnung bzw. FALSE für eine deaktivierte Zuordnung. Beispiel <% Dim objCert, strCert, strAcct, strPwd, strName, boolEnabled Set objCert = GetObject("IIS://ADsPath../IIsCertMapper")_ objCert.GetMapping 3, "MEINKTO", strCert, strAcct, strPwd,_ strName, boolEnabled %>
SetAcct Mit dieser Methode wird ein neuer Wert für die Zeichenfolge des WindowsKontos in einer vorhandenen Zertifikatszuordnung festgelegt Syntax IIsCertMapper.SetAcct suchMethode, strKey, strAcct
suchMethode bezeichnet die Suchmethode für die Zuordnung. Sie enthält einen von vier gültigen ganzzahligen Werten: •
1. Suche nach Zertifikat
•
2. Suche nach Name
•
3. Suche nach Windows-Konto
•
4. Suche nach numerischem Zeichenfolgenindex
strKey bezeichnet die Zeichenkette, die bei der durch suchMethode festgelegten Suche benutzt wird. strAcct bezeichnet einen neuen Wert für die Zeichenfolge des Windows-Kontos. Beispiel <% Dim objCert Set objCert = GetObject("IIS://ADsPath../IIsCertMapper") objCert.SetAcct 3, "MEINKTO", "NeuKonto" %>
Anhang B • Referenz für IIS Admin Objects
459
SetEnabled Mit dieser Methode wird eine vorhandene Zertifikatszuordnung aktiviert bzw. deaktiviert. Syntax IIsCertMapper.SetEnabled suchMethode, strKey, boolEnabled
suchMethode bezeichnet die Suchmethode für die Zuordnung. Sie enthält einen von vier gültigen ganzzahligen Werten: •
1. Suche nach Zertifikat
•
2. Suche nach Name
•
3. Suche nach Windows-Konto
•
4. Suche nach numerischem Zeichenfolgenindex
strKey bezeichnet die Zeichenkette, die bei der durch suchMethode festgelegten Suche benutzt wird. boolEnabled legt für die Aktivierung der Zuordnung TRUE und für die Deaktivierung der Zuordnung FALSE fest. Beispiel <% Dim objCert Set objCert = GetObject("IIS://ADsPath../IIsCertMapper")_ objCert.SetEnabled 3, "MEINKTO", True %>
SetName Mit dieser Methode wird ein neuer Wert für die Zeichenfolge des WindowsKontos in einer vorhandenen Zertifikatszuordnung festgelegt. Syntax IIsCertMapper.SetName suchMethode, strKey, strName
suchMethode bezeichnet die Suchmethode für die Zuordnung. Sie enthält einen von vier gültigen ganzzahligen Werten: •
1. Suche nach Zertifikat
•
2. Suche nach Name
•
3. Suche nach Windows-Konto
•
4. Suche nach numerischem Zeichenfolgenindex
strKey bezeichnet die Zeichenkette, die bei der durch suchMethode festgelegten Suche benutzt wird. strName gibt einen neuen Wert für die Namenszeichenfolge an.
460
IIsCompressionSchemes
Beispiel <% Dim objCert Set objCert = GetObject("IIS://ADsPath../IIsCertMapper")_ objCert.SetName 3, "MEINKTO", "NeuerName" %>
SetPwd Mit dieser Methode wird ein neuer Wert für die Zeichenfolge des Windows-Kennworts in einer vorhandenen Zertifikatszuordnung festgelegt. Syntax IIsCertMapper.SetPwd suchMethode, strKey, strPwd
von vier gültigen ganzzahligen Werten: •
1. Suche nach Zertifikat
•
2. Suche nach Name
•
3. Suche nach Windows-Konto
•
4. Suche nach numerischem Zeichenfolgenindex
strKey bezeichnet die Zeichenkette, die bei der durch suchMethode festgelegten Suche benutzt wird. strName gibt einen neuen Wert für die Zeichenfolge des Windows-Kennworts an. Beispiel <% Dim objCert Set objCert = GetObject("IIS://ADsPath../IIsCertMapper")_ objCert.SetPwd 3, "MEINKTO", "NeuKennwort" %>
B.2
IIsCompressionSchemes Das Objekt IIsCompressionSchemes ist ein ADSI-Containerobjekt, dass die einzelnen HTTP 1.1-Komprimierungsverfahren enthält, die IIS über das ADSIObjekt IIsCompressionScheme zur Verfügung stehen. Darüber hinaus werden alle globalen Komprimierungseinstellungen für die IIS-Installation in diesem Objekt gespeichert. ADsPath IIS://computername/W3SVC/Filters/Compression/Parameter
Anhang B • Referenz für IIS Admin Objects
461
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode varRückgabe = objekt.eigenschaft
Die Variable varRückgabe enthält den Rückgabewert der Methode. objekt enthält das von der Methode GetObject zurückgegebene IISCompressionSchemesObjekt. methode/eigenschaft ist die gewählte Methode bzw. Eigenschaft. Möglicher Objektinhalt IIsCompressionScheme Eigenschaften Eigenschaften von ADSI-Objekten und ADSI-Containerobjekten. Hinweise zu diesen Eigenschaften finden Sie in Anhang C. Eigenschaften in der Metabasis HcCacheControlHeader
HcCompressionBufferSize
HcCompressionDirectory
HcDoDiskSpaceLimiting
HcDoDynamicCompression
HcDoOnDemandCompression
HcDoStaticCompression
HcExpiresHeader
HcFilesDeletedPerDiskFree
HcIoBufferSize
HcMaxDiskSpaceUsage
HcMaxQueueLength
HcMinFileSizeForComp
HcNoCompressionForHttp10
HcNoCompressionForProxies
HcNoCompressionForRange
HcSendCacheHeaders Methoden Methoden für ADSI-Objekte und ADSI-Containerobjekte. Hinweise zu diesen Methoden finden Sie in Anhang C.
B.3
IIsCompressionScheme Dies ist ein ADSI-Objekt, das Konfigurationsinformationen über ein individuelles Komprimierungsverfahren enthält. Alle Instanzen des Objekts IIsCompressionScheme sind in dem ADSI-Containerobjekt IIsCompressionSchemes enthalten.
462
IIsComputer
ADsPath IIS://computername/W3SVC/Filters/Compression/Scheme
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode varRückgabe = objekt.eigenschaft
Die Variable varRückgabe enthält den Rückgabewert der Methode. objekt enthält das von der Methode GetObject zurückgegebene IISCompressionScheme-Objekt. methode/eigenschaft ist die gewählte Methode bzw. Eigenschaft. Eigenschaften ADSI-Objekteigenschaften. Hinweise zu diesen Eigenschaften finden Sie in Anhang C. Eigenschaften in der Metabasis HcCompressionDll
HcCreateFlags
HcDoDynamicCompression
HcDoStaticCompression
HcDoOnDemandCompression
HcDynamicCompressionLevel
HcFileExtensions
HcMimeType
HcOnDemandCompLevel
HcPriority
HcScriptFileExtensions Methoden Methoden für ADSI-Objekte. Wenn dieses Objekt kein Containerobjekt ist, sind die Methoden für ADSIContainerobjekte nicht vorhanden. Hinweise zu diesen Methoden finden Sie in Anhang C.
B.4
IIsComputer Mit diesem Objekt können Sie Werte für globale Metabasiseigenschaften festlegen, die die Funktionsweise von IIS bestimmen. Es handelt sich hierbei um ein ADSI-Containerobjekt. Dem Objekt sind vier Methoden zugeordnet, mit denen Sie mehrere Sicherungsversionen im Langzeitspeicher ablegen, die Metabasis von einer Sicherungsversion Ihrer Wahl wiederherstellen und Sicherungskopien auflisten und löschen können.
Anhang B • Referenz für IIS Admin Objects
463
ADsPath IIS://computername
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Die Variable varRückgabe enthält den Rückgabewert der Methode. objekt enthält das von der Methode GetObject zurückgegebene IIsComputer-Objekt. methode ist die gewählte Methode. Möglicher Objektinhalt IIsFtpService, IIsMimeMap, IIsLogModules, IIsWebService Eigenschaften ADSI-Objekteigenschaften. Weitere Hinweise hierzu finden Sie in Anhang C. Eigenschaften in der Metabasis MaxBandwidth
MaxBandwidthBlocked
MimeMap Backup Mit dieser Methode können Sie eine Sicherungskopie der Metabasis unter einem Pfad ablegen, dessen Name aus bis zu 100 Zeichen bestehen kann. In einem Sicherungsverzeichnis können mehrere Sicherungskopien der Metabasis gespeichert werden. Syntax IIsComputer.Backup SicherungsPfad, SicherungsVersion, SicherungsOptionen
Parameter SicherungsPfad ist eine Zeichenfolge mit bis zu 100 Zeichen, die den Sicherungspfad angibt. Der Speichermechanismus wird von IIS bestimmt. Bei einer leeren Zeichenfolge wird die Sicherungskopie unter dem Standardpfad gespeichert. SicherungsVersion gibt die Versionsnummer an, die der Sicherungskopie zugewiesen werden soll. Dieser Wert muss kleiner oder gleich MD_BACKUP_MAX_ VERSION sein. Für diesen Parameter kann einer der folgenden Werte festgelegt werden:
464
IIsComputer
•
MD_BACKUP_HIGHEST_VERSION. Überschreibt die höchste Sicherungsversionsnummer im angegebenen Sicherungsverzeichnis.
•
MD_BACKUP_NEXT_VERSION. Verwendet die nächsthöchste Sicherungsversionsnummer im angegebenen Sicherungsverzeichnis.
Die SicherungsOptionen bestimmen, wie die Sicherung ausgeführt wird. Die folgenden Werte sind möglich: •
MD_BACKUP_FORCE_BACKUP. Die Durchführung der Sicherung wird erzwungen, selbst wenn der über MD_BACKUP_SAVE_FIRST angegebene SaveData-Vorgang nicht ausgeführt wird.
•
MD_BACKUP_OVERWRITE. Führt eine Sicherung in das angegebene Sicherungsverzeichnis aus. Eine eventuell vorhandene Sicherung gleichen Namens wird überschrieben.
•
MD_BACKUP_SAVE_FIRST. Führt einen SaveData-Vorgang vor dem Erstellen der Sicherungskopie durch. Hinweis Der Speichermechanismus für die Sicherung wird von IIS bestimmt, so dass der von Ihnen angegebene Name für den Sicherungspfad nicht notwendigerweise in ein bestimmtes Verzeichnis, eine bestimmte Datei bzw. einen bestimmten Speichermechanismus übersetzt wird. In dieser Version werden Sicherungskopien der Metabasis als Dateien im Verzeichnis System32\Inetsrv\MetaBack gespeichert.
Beispiel <% Dim objComputer, varFlags Set objComputer = GetObject("IIS://computername ") varFlags = (MD_BACKUP_SAVE_FIRST) objComputer.Backup "MeineSicherungen", MD_BACKUP_NEXT_VERSION, varFlags %>
DeleteBackup Mit dieser Methode können Sie eine Sicherungskopie der Metabasis aus einem Sicherungsverzeichnis löschen. Syntax IIsComputer.DeleteBackup SicherungsPfad, SicherungsVersion
SicherungsPfad ist eine Zeichenfolge mit bis zu 100 Zeichen, die den Sicherungspfad angibt.
Anhang B • Referenz für IIS Admin Objects
465
SicherungsVersion gibt die Versionsnummer der Sicherungskopie an, die aus dem Sicherungsverzeichnis gelöscht werden soll. Alternativ dazu kann für den Parameter die Konstante MD_BACKUP_HIGHEST_VERSION verwendet werden, die die höchste Sicherungsversionsnummer aus dem angegebenen Sicherungsverzeichnis löscht. Beispiel <% Dim objComputer Set objComputer = GetObject("IIS://computername") objComputer.DeleteBackup "MeineSicherungen", 1 %>
EnumBackups Diese Methode listet alle Sicherungen der Metabasis im angegebenen Sicherungsverzeichnis auf. Dabei werden die folgenden Werte für jede Sicherung zurückgegeben: •
Sicherungspfad
•
Versionsnummer
•
Sicherungsdatum
Syntax IIsComputer.EnumBackups SicherungspfadIn, IndexIn, SicherungsverAus, SicherungspfadAus, SicherungsdatumZeitAus
SicherungspfadIn ist eine Zeichenfolge mit bis zu 100 Zeichen, die den Sicherungspfad angibt. IndexIn gibt den Index der aufzulistenden Sicherungskopie an. Starten Sie den Index bei 0, und erhöhen Sie den Wert um 1, bis MD_ERROR_DATA_NOT_ FOUND zurückgegeben wird. SicherungsverAus gibt die Versionsnummer der aufgelisteten Sicherungskopie an. SicherungspfadAus gibt den Sicherungspfad der aufgelisteten Sicherungskopie an. SicherungsdatumZeitAus gibt Datum und Uhrzeit der Sicherungskopie im UTCFormat (Universal Time Coordinate) aus. Beispiel <%@ LANGUAGE=VBScript %> <SCRIPT LANGUAGE = "JScript" RUNAT = SERVER> var TempDate = new Date(); TempDif = TempDate.getTimezoneOffset();
466
IIsComputer
Session("sTempDif") = TempDif; <% Dim objComp, Index, Version, Location, GMTDate, LocDate, MinDif MinDif = Session("sTempDif") On Error Resume Next Set objComp = GetObject("IIS://computername") Index = 0 Do While True objComp.EnumBackups "", Index, Version, Location, GMTDate If Err.Number <> 0 Then Exit Do End If Response.Write Version & ", " Response.Write Location & ", " Response.Write GMTDate & ", " LocDate = DateAdd("n", (-MinDif), GMTDate) Response.Write "(" & LocDate & ")" Response.Write " " Index = Index + 1 Loop %>
Restore Mit dieser Methode können Sie die Metabasis aus einer Sicherungskopie wiederherstellen. Beim Wiederherstellungsvorgang werden alle von IISADMIN abhängigen Dienste, einschließlich sämtlicher Server, beendet, bis die Wiederherstellung abgeschlossen ist. Anschließend werden alle Dienste neu gestartet. Wenn Sie die Metabasis daher über ein in einer ASP-Seite enthaltenes Skript wiederherstellen, müssen Sie einen anderen Computernamen angeben als den vom Skript verwendeten. localhost kann nicht als Computername verwendet werden. Aufgrund dieser Unterbrechung der Dienste sollten Sie das Wiederherstellen der Metabasis von einer Sicherungskopie sorgfältig planen. Syntax IIsComputer.Restore SicherungsPfad, SicherungsVersion, SicherungsOptionen
strSicherungsPfad ist eine Zeichenfolge mit bis zu 100 Zeichen, die den Sicherungspfad angibt. intSicherungsVersion gibt die Versionsnummer der Sicherungskopie an, die aus dem Sicherungsverzeichnis wiederhergestellt werden soll. Alternativ dazu kann für den Parameter die Konstante MD_BACKUP_HIGHEST_VERSION verwendet werden, die die höchste Sicherungsversionsnummer aus dem angegebenen Sicherungsverzeichnis wiederherstellt. SicherungsOptionen ist reserviert und muss Null sein.
Anhang B • Referenz für IIS Admin Objects
467
Beispiel <% Dim objComputer, ComputerName ComputerName = "MeinAndererComputer" Set objComputer = GetObject("IIS://" & ComputerName) objComputer.Restore "MeineSicherungen", MD_BACKUP_HIGHEST_VERSION, 0 %>
Dieses Beispiel zeigt, wie die Methode auf einem anderen Computer im Rahmen einer ASP-Skripts ausgeführt wird. Dadurch wird verhindert, dass die Dienste auf dem Computer, auf dem das Skript ausgeführt wird, beendet werden müssen. Hinweis Sie können den Wiederherstellungsvorgang auf dem gleichen Computer ausführen, indem Sie das Skriptutility Cscript.exe verwenden. Weitere Informationen hierzu finden Sie in Kapitel 13. Warnung Die Funktionen zur Sicherung und Wiederherstellung der Metabasis dienen zur Versionskontrolle, jedoch nicht zur computerübergreifenden Replikation. Eine Sicherungskopie der Metabasis darf nur auf dem Computer wiederhergestellt werden, auf dem sie ursprünglich erstellt wurde.
B.5
IIsCustomLogModule Mit dem Objekt IIsCustomLogModule können Sie benutzerspezifische Protokollinformationsfelder konfigurieren. ADsPath IIS://computername/Logging/CustomLogging IIS://computername/Logging/CustomLogging/Feld IIS://computername/Logging/CustomLogging/Feldergruppe IIS://computername/Logging/CustomLogging/Feldergruppe/Feld
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält den Namen des von der Methode GetObject zurückgegebenen Objekts. methode ist die ausgewählte Methode.
468
IIsFilter
Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis LogCustomPropertyDataType
LogCustomPropertyHeader
LogCustomPropertyID
LogCustomPropertyMask
LogCustomPropertyName
LogCustomPropertyServicesString
Methoden Methoden für ADSI-Objekte
B.6
IIsFilter Mit dem Objekt IIsFilter können Sie Metabasiseigenschaften festlegen, die die Funktionsweise von ISAPI-Filtern bestimmen. Filtereigenschaften können auf WWW-Dienstebene oder für einen individuellen Webserver definiert werden. ADsPath IIS://computername/W3SVC/Filters/FilterName
oder IIS://computername/W3SVC/N/Filters/FilterName
computername kann ein beliebiger Name oder localhost sein. N ist gegebenenfalls die Nummer eines Webservers. Syntax varRückgabe = objekt.methode
Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene Objekt. methode ist die ausgewählte Methode. Eigenschaften ADSI-Objekteigenschaften
Anhang B • Referenz für IIS Admin Objects
469
Eigenschaften in der Metabasis FilterDescription
FilterEnabled
FilterFlags
FilterPath
FilterState
NotifyAccessDenied
NotifyAuthentication
NotifyEndOfNetSession
NotifyEndOfRequest
NotifyLog
NotifyNonSecurePort
NotifyOrderHigh
NotifyOrderLow
NotifyOrderMedium
NotifyPreProcHeaders
NotifyReadRawData
NotifySecurePort
NotifySendRawData
NotifySendResponse
NotifyUrlMap
Methoden Methoden für ADSI-Objekte
B.7
IIsFilters Dieses Objekt ist ein ADSI-Containerobjekt, in dem eine Auflistung der Objekte vom Typ IIsFilter enthalten ist. Mit dem Objekt IIsFilters können Sie die Eigenschaft FilterLoadOrder festlegen, um die Reihenfolge anzugeben, in der die Filter geladen werden sollen, und um Auflistungen basierend auf Filtern auszugeben. Filter können mit Hilfe des Objekts IIsFilters auf WWW-Dienstebene oder auf einem individuellen Webserver verwaltet werden. ADsPath IIS://computername/W3SVC/Filters
oder IIS://computername/W3SVC/N/Filters
computername kann ein beliebiger Name oder localhost sein. N ist gegebenenfalls die Nummer eines Webservers. Syntax varRückgabe = objekt.methode
Die Variable varRückgabe enthält den Rückgabewert der Methode.
470
IIsFtpInfo
Die Variable objekt enthält das von der Methode GetObject zurückgegebene Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsFilter Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis FilterLoadOrder Methoden Methoden für ADSI-Objekte und für ADSI-Containerobjekte.
B.8
IIsFtpInfo Einige dem FTP-Dienst zugeordneten Metabasiseigenschaften sind im Teilschlüssel Info des Schlüssels MSFTPSVC gespeichert. Mit diesem Objekt können Sie Werte für diese Eigenschaften festlegen. ADsPath IIS://computername/MSFTPSVC/Info
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene Objekt. methode ist die ausgewählte Methode. Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis LogModuleList
Anhang B • Referenz für IIS Admin Objects
471
Methoden Methoden für ADSI-Objekte
B.9
IIsFtpServer Mit diesem Objekt können Sie Metabasiseigenschaften für einen bestimmten FTP-Server festlegen und vererbbare Metabasiseigenschaften für virtuelle FTPVerzeichnisse definieren. Es stehen ferner besondere Methoden zur Steuerung von Servervorgängen zur Verfügung. Das Objekt IIsFtpServer ist ein ADSI-Containerobjekt. ADsPath IIS://computername/MSFTPSVC/N
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsFtpVirtualDir Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis AccessFlags AccessWrite AllowAnonymous AnonymousPasswordSync AnonymousUserPass DefaultLogonDomain DontLog
AccessRead AdminACL AnonymousOnly AnonymousUserName ConnectionTimeout DisableSocketPooling ExitMessage
472
IIsFtpServer
FtpDirBrowseShowLongDate IPSecurity LogExtFileBytesRecv LogExtFileClientIp LogExtFileCookie LogExtFileFlags LogExtFileMethod LogExtFileReferer LogExtFileServerPort LogExtFileTime LogExtFileUriQuery LogExtFileUserAgent LogExtFileWin32Status LogFileLocaltimeRollover LogFileTruncateSize LogOdbcDataSource LogOdbcTableName LogPluginClsId MaxClientsMessage MaxEndpointConnections Realm ServerBindings ServerListenBacklog ServerSize
GreetingMessage LogAnonymous LogExtFileBytesSent LogExtFileComputerName LogExtFileDate LogExtFileHttpStatus LogExtFileProtocolVersion LogExtFileServerIp LogExtFileSiteName LogExtFileTimeTaken LogExtFileUriStem LogExtFileUserName LogFileDirectory LogFilePeriod LogNonAnonymous LogOdbcPassword LogOdbcUserName LogType MaxConnections MSDOSDirOutput ServerAutoStart ServerComment ServerListenTimeout ServerState
Continue Diese Methode setzt den Server fort. Syntax IIsFtpServer.Continue
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/MSFTPSVC/2") objServer.Continue %>
Anhang B • Referenz für IIS Admin Objects
473
Pause Diese Methode hält den Server an. Syntax IIsFtpServer.Pause
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/MSFTPSVC/2") objServer.Pause %>
Start Diese Methode startet den Server. Syntax IIsFtpServer.Start
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/MSFTPSVC/2") objServer.Start %>
Stop Diese Methode beendet den Server. Syntax IIsFtpServer.Stop
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/MSFTPSVC/2") objServer.Stop %>
Status Diese Methode ruft den aktuellen Serverstatus ab. Die Rückgabe erfolgt als ganzzahlige Werte.
474
IIsFtpService
Syntax IIsFtpServer.Status
Rückgabewerte
B.10
•
1. Es wird gestartet.
•
2. Gestartet.
•
3. Es wird beendet.
•
4. Beendet.
•
5. Es wird angehalten.
•
6. Angehalten.
•
7. Der Server wird fortgesetzt.
IIsFtpService Mit diesem Objekt können Sie die Eigenschaftswerte der Metabasis festlegen, mit denen die FTP-Sites und virtuelle FTP-Verzeichnisse gesteuert werden. ADsPath IIS://computername/MSFTPSVC
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsFtpServer, IIsFtpInfo Eigenschaften ADSI-Objekteigenschaften
Anhang B • Referenz für IIS Admin Objects
475
Eigenschaften in der Metabasis AccessFlags
AccessRead
AccessWrite
AdminACL
AllowAnonymous
AnonymousOnly
AnonymousPasswordSync
AnonymousUserName
AnonymousUserPass
ConnectionTimeout
DefaultLogonDomain
DirectoryLevelsToScan
DisableSocketPooling
DontLog
ExitMessage
FtpDirBrowseShowLongDate
GreetingMessage
IPSecurity
LogAnonymous
LogExtFileBytesRecv
LogExtFileBytesSent
LogExtFileClientIp
LogExtFileComputerName
LogExtFileCookie
LogExtFileDate
LogExtFileFlags
LogExtFileHttpStatus
LogExtFileMethod
LogExtFileProtocolVersion
LogExtFileReferer
LogExtFileServerIp
LogExtFileServerPort
LogExtFileSiteName
LogExtFileTime
LogExtFileTimeTaken
LogExtFileUriQuery
LogExtFileUriStem
LogExtFileUserAgent
LogExtFileUserName
LogExtFileWin32Status
LogFileDirectory
LogFileLocaltimeRollover
LogFilePeriod
LogFileTruncateSize
LogNonAnonymous
LogOdbcDataSource
LogOdbcPassword
LogOdbcTableName
LogOdbcUserName
LogPluginClsId
LogType
MaxClientsMessage
MaxConnections
MaxEndpointConnections
MSDOSDirOutput
Realm
ServerAutoStart
ServerBindings
ServerComment
ServerListenBacklog
ServerListenTimeout
ServerSize
476
IIsFtpVirtualDir
Methoden Methoden für ADSI-Objekte und für ADSI-Containerobjekte.
B.11
IIsFtpVirtualDir Mit diesem Objekt können Sie Metabasiseigenschaften für ein virtuelles FTPVerzeichnis oder sämtliche virtuellen FTP-Verzeichnisse eines FTP-Servers festlegen. Wenn Sie dieses Objekt auf das virtuelle Stammverzeichnis des Servers anwenden, gelten die vererbbaren Eigenschaftswerte für sämtliche virtuellen FTPUnterverzeichnisse des virtuellen Stammverzeichnisses, sofern auf untergeordneter Ebene keine speziellen Einstellungen vorgenommen wurden, die Vorrang haben. Das Objekt ist ein ADSI-Containerobjekt. ADsPath Der Pfad für das virtuelle Stammverzeichnis des Servers lautet IIS://computername/MSFTPSVC/N/ROOT
Der Pfad für ein bestimmtes virtuelles Verzeichnis lautet IIS://computername/MSFTPSVC/N/ROOT/vVerzName
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsFtpVirtualDir-Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsFtpVirtualDir Eigenschaften ADSI-Objekteigenschaften
Anhang B • Referenz für IIS Admin Objects
477
Eigenschaften in der Metabasis AccessFlags
AccessRead
AccessWrite
DontLog
FtpDirBrowseShowLongDate
IPSecurity
Path
UNCPassword
UNCUserName Methoden Methoden für ADSI-Objekte und für ADSI-Containerobjekte.
B.12
IIsIPSecurity Das Objekt IIsIPSecurity ist ein benutzerdefiniertes ADSI-Objekt, mit dem Sie Zugriffsberechtigungen für IP-Adressen und Domänenadressen festlegen können. Mit der booleschen Eigenschaft GrantByDefault wird ermittelt, ob der Benutzerzugriff standardmäßig gewährt oder verweigert wird. ADsPath Der Pfad für das virtuelle Stammverzeichnis des Servers lautet: IIS://computername/W3SVVC/N/ROOT
Der Pfad für ein bestimmtes virtuelles Verzeichnis lautet: IIS://computername/W3SVC/N/ROOT/vVerzName
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsIPSecurity-Objekt. methode ist die ausgewählte Methode.
478
IIsIPSecurity
Gültige Pfade Schlüsseltyp
Metabasispfad
IIsWebService
/LM/W3SVC/
IIsWebServer
/LM/W3SVC/1
IIsWebFile
/LM/W3SVC/1/ROOT/vVerzName/text.htm
IIsWebDirectory
/LM/W3SVC/1/ROOT/vVerzName/unterverzeichnis
IIsFtpVirtualDir
/LM/SMFTPSVC/1/ROOT/vVerzName
IIsFtpService
/LM/SMFTPSVC/
IIsFtpServer
/LM/SMFTPSVC/1
IIsWebVirtualDir
/LM/W3SVC/1/ROOT/Samples
Eigenschaften •
IPDeny. Mit dieser Methode wird auf ein Array von IP-Adressen zugegriffen, über das der Zugriff auf den Server nicht gestattet ist.
•
IPGrant. Mit dieser Methode wird auf ein Array von IP-Adressen zugegriffen, über die der Zugriff auf den Server gestattet ist.
•
DomainDeny. Mit dieser Methode wird auf ein Array von Domänen zugegriffen, über das der Zugriff auf den Server nicht gestattet ist.
•
DomainGrant. Mit dieser Methode wird auf ein Array von Domänen zugegriffen, über das der Zugriff auf den Server gestattet ist.
•
GrantByDefault. Mit dieser booleschen Eigenschaft wird ermittelt, ob der Benutzerzugriff standardmäßig gewährt oder verweigert wird. Hinweis Wenn die Eigenschaft GrantByDefault den Wert TRUE hat, können Sie nur die Eigenschaften IPDeny und DomainDeny einsetzen. Um die Eigenschaften IPGrant und DomainGrant verwenden zu können, müssen Sie GrantByDefault den Wert FALSE zuweisen.
Eigenschaften in der Metabasis ADSI Object Properties Mit IPSecurity werden die IP-Zugriffsbeschränkungen angegeben. IPDeny Mit dieser Eigenschaft können Sie Listen mit IP-Adressen bearbeiten, die zu einem Array zusammengefasst sind und über die der Zugriff auf den Server nicht gestattet ist.
Anhang B • Referenz für IIS Admin Objects
479
Syntax SecObj.IPDeny "IPAdresse,subnetzmaske"
Parameter SecObj ist ein IIS Admin Object vom Typ IIsIPSecurity. IPAdresse bezeichnet eine spezielle IP-Adresse, für die Sie den Zugriff auf den Server verweigern möchten. subnetzmaske ist die Subnetzmaske für die angegebene IP-Adresse. Beispiel <% Dim SecObj, MyIPSec Dim IPList, DomainList Set SecObj = GetObject("IIS://computername/W3SVC/1") Set MyIPSec = SecObj.IPSecurity DomainList = MyIPSec.DomainDeny IPList = MyIPSec.IPDeny Redim IPList (Ubound(IPList)+1) IPList (Ubound(IPList)) = "142.166.17.1,255.255.255.0" Redim DomainList (Ubound(DomainList)+1) DomainList (Ubound(DomainList)) = "domain.com" IPSec.DomainDeny = DomainList IPSec.IPDeny = IPList Set SecObj.IPSecurity = MyIPSec Ojb.Setinfo %>
IPGrant Mit dieser Eigenschaft können Sie Listen mit IP-Adressen bearbeiten, die zu einem Array zusammengefasst sind und über die der Zugriff auf den Server gestattet ist. Syntax SecObj.IPGrant "IPAdresse,subnetzmaske"
Parameter SecObj ist ein IIS Admin Object vom Typ IIsIPSecurity. IPAdresse bezeichnet eine spezielle IP-Adresse, für die Sie den Zugriff auf den Server gewähren möchten. subnetzmaske ist die Subnetzmaske für die angegebene IP-Adresse.
480
IIsIPSecurity
Beispiel <% Dim SecObj, MyIPSec Dim IPList, DomainList Set SecObj = GetObject("IIS://computername/W3SVC/1") Set MyIPSec = SecObj.IPSecurity DomainList = MyIPSec.DomainGrant IPList = MyIPSec.IPGrant Redim IPList (Ubound(IPList)+1) IPList (Ubound(IPList)) = "142.166.17.1, 255.255.255.0" Redim DomainList (Ubound(DomainList)+1) DomainList (Ubound(DomainList)) = "domain.com" IPSec.DomainGrant = DomainList IPSec.IPGrant = IPList Set SecObj.IPSecurity = MyIPSec Ojb.Setinfo %>
DomainDeny Mit dieser können Sie Listen von Domänen bearbeiten, über die der Zugriff auf den Server nicht gestattet ist. Syntax SecObj.DomainDeny Domäne
Parameter SecObj ist ein IIS Admin Object vom Typ IIsIPSecurity. Domäne ist die Domäne, für die Sie den Zugriff auf den Server verweigern möchten. Beispiel <% Dim SecObj, MyIPSec Dim IPList, DomainList Set SecObj = GetObject("IIS://computername/W3SVC/1") Set MyIPSec = SecObj.IPSecurity DomainList = MyIPSec.DomainDeny IPList = MyIPSec.IPDeny Redim IPList (Ubound(IPList)+1) IPList (Ubound(IPList)) = "123.0.0.1,255.255.255.0" Redim DomainList (Ubound(DomainList)+1) DomainList (Ubound(DomainList)) = "domain.com" IPSec.DomainDeny = DomainList
Anhang B • Referenz für IIS Admin Objects
481
IPSec.IPDeny = IPList Set SecObj.IPSecurity = MyIPSec Ojb.Setinfo %>
DomainGrant Mit dieser Eigenschaft können Sie Listen von Domänen bearbeiten, über die der Zugriff auf den Server gestattet ist. Syntax SecObj.DomainGrant Domäne
Parameter SecObj ist ein IIS Admin Object vom Typ IIsIPSecurity. Domäne ist die Domäne, für die Sie den Zugriff auf den Server verweigern möchten. Beispiel <% Dim SecObj, Dim MyIPSec Dim IPList, DomainList Set SecObj = GetObject("IIS://computername/W3SVC/1") Set MyIPSec = SecObj.IPSecurity DomainList = MyIPSec.DomainGrant IPList = MyIPSec.IPGrant Redim IPList (Ubound(IPList)+1) IPList (Ubound(IPList)) = "142.166.17.1,255.255.255.0" Redim DomainList (Ubound(DomainList)+1) DomainList (Ubound(DomainList)) = "domain.com" IPSec.DomainGrant = DomainList IPSec.IPGrant = IPList Set SecObj.IPSecurity = MyIPSec Ojb.Setinfo %>
GrantByDefault Mit dieser booleschen Eigenschaft können Sie festlegen, ob ein Benutzer standardmäßig Zugriff auf den Server hat oder nicht. Syntax SecObj.GrantByDefault Boolesch
Parameter SecObj ist ein IIS Admin Object vom Typ IIsIPSecurity. Boolesch ist ein Parameter mit dem Wert TRUE oder FALSE.
482
IIsLogModule
Beispiel <% Dim SecObj Set SecObj = GetObject("IIS://computername/W3SVC/1") SecObj.GrantByDefault=TRUE SecObj.SetInfo %>
B.13
IIsLogModule Mit diesem Objekt können Sie Metabasiseigenschaften festlegen, die die Funktionsweise von Protokollmodulen bestimmen. Filtereigenschaften können auf Computerebene, auf FTP- und WWW-Dienstebene oder für einen individuellen Webserver definiert werden. ADsPath IIS://computername/LOGGING/protokollmodulname
computername kann ein beliebiger Name oder localhost sein. protokollmodulname ist der Name eines Protokollmoduls. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsLogModule-Objekt. methode ist die ausgewählte Methode. Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis LogModuleIdLogModuleUiId Methoden Methoden für ADSI-Objekte
Anhang B • Referenz für IIS Admin Objects
B.14
483
IIsLogModules Das Objekt IIsLogModules ist ein ADSI-Containerobjekt, in dem eine Auflistung der Objekte vom Typ IIsLogModule enthalten ist. Mit Hilfe des Objekts IIsLogModules können Sie Protokollmodule auf Computerebene verwalten. Das Objekt ist ein ADSI-Containerobjekt. ADsPath IIS://computername/LOGGING
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsLogModules-Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsLogModule Eigenschaften ADSI-Objekteigenschaften Methoden Methoden für ADSI-Objekte und für ADSI-Containerobjekte. Beispiel <% Dim LoggingModules, objCurrent Set objCurrent = GetObject("IIS://computername/W3SVC/1") Set LoggingModules = GetObject("IIS://computername/logging") If objCurrent.LogPluginClsid <> "" Then For Each LogModule in LoggingModules If LogModule.LogModuleID = objCurrent.LogPluginClsid Then Response.Write LogModule.Name & " " End If Next Response.Write objCurrent.LogFileDate End If %>
484
B.15
IIsMimeMap
IIsMimeMap Mit diesem Objekt können Sie vererbte MIME-Zuordnungen (Multipurpose Internet Mail Extensions) festlegen, die von den Webservern verwendet werden. ADsPath IIS://computername/MIMEMAP
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsMimeMap-Objekt. methode ist die ausgewählte Methode. Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis MimeMap Methoden Methoden für ADSI-Objekte
B.16
IIsMimeType Die Eigenschaft MimeMap enthält ein Array von IISMimeType-Objekten. Wenn Sie dem Array ein Element hinzufügen möchten, erstellen Sie ein neues IISMimeType-Objekt, geben einen Wert für MimeType an, erstellen mit Hilfe von Extension die Erweiterung und fügen das Element der Gruppe der MimeMapObjekte hinzu. Syntax varMimeMap = objekt.MimeMap Set objMimeType = aMimeMap(0)
Komponenten varMimeMap ist eine Variable, die die Liste der IIsMimeType-Objekte abruft.
Anhang B • Referenz für IIS Admin Objects
485
objekt ist eine Variable, die die Eigenschaft MimeType unterstützt, in der Regel als Ergebnis eines vorherigen GetObject-Vorgangs. objMimeType ist eine Objektvariable, die das Objekt IIsMimeType abruft. Möglicher Objektinhalt In diesem Objekt kann kein anderes Objekt enthalten sein Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis MimeMap (Stellt eine Liste der Dateinamenerweiterungen für MIME-Zuordnungen bereit.) MimeType Mit Hilfe dieser Eigenschaft können Sie über die Werte GET und PUT den MIME-Typ für Objekte des Typs IISMimeType abrufen bzw. festlegen. Syntax objDir.MimeType= zeichenfolge
Parameter objDir ist ein IIS Admin Object vom Typ IIsMimeType. zeichenfolge ist eine Zeichenfolge, die den MIME-Typ für das Objekt angibt. Beispiel <%Dim objDir, Dim MimeMapNode, Dim MimeMapList, Dim MimeMapEntry Set objDir = GetObject("IIS://computername/MimeMap") MimeMapList = objDir.MimeMap Redim preserve MimeMapList (Ubound(MimeMapList)+1) Set MimeMapEntry = CreateObject ("IIsMimeTypeEntry") MimeMapEntry.MimeType = "Text/Plain" Mime.Extension = ".log" Set MimeMapList (Ubound(MimeMapList)) = MimeMapEntry objDir.MimeMap = MimeMapList objDir.Setinfo %>
Extension Hiermit geben Sie den MIME-Typ der Dateinamenerweiterung an. Syntax objDir.Extension = zeichenfolge
486
IIsWebDirectory
Parameter objDir ist ein IIS Admin Object vom Typ IIsMimeType. zeichenfolge ist eine bestimmte Dateinamenerweiterung, die dem mit der Eigenschaft MimeType angegebenen MIME-Typ zugeordnet ist. Beispiel <% Dim objDir, Dim MimeMapNode, Dim MimeMapList, Dim MimeMapEntry Set objDir = GetObject("IIS://computername/MimeMap") MimeMapList = objDir.MimeMap Redim preserve MimeMapList (Ubound(MimeMapList)+1) Set MimeMapEntry = CreateObject ("IIsMimeTyepEntry") MimeMapEntry.MimeMap = "Text/Plain" Mime.Extension = ".log" Set MimeMapList (Ubound(MimeMapList)) = MimeMapEntry objDir.MimeMap = MimeMapList objDir.Setinfo %>
B.17
IIsWebDirectory Mit diesem Objekt werden Metabasiseigenschaften für Webverzeichnisse eines Webservers festgelegt. Wenn Sie hiermit Metabasiseigenschaften für ein Webverzeichnis konfigurieren, gelten die vererbbaren Eigenschaften für sämtliche Unterverzeichnisse und Dateien. Weiterhin können Sie über die Methoden von IIsWebDirectory Webanwendungen in Webverzeichnissen und Unterverzeichnissen erstellen und verwalten. Das Objekt ist ein ADSI-Containerobjekt. ADsPath IIS://computername/W3SVC/N/ROOT/vVerzName/VerzName
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsWebDirectory-Objekt. methode ist die ausgewählte Methode.
Anhang B • Referenz für IIS Admin Objects
487
Möglicher Objektinhalt IIsWebDirectory,IIsWebFile Eigenschaften ADSI-Eigenschaften Eigenschaften in der Metabasis AccessExecute
AccessFlags
AccessNoRemoteExecute
AccessNoRemoteRead
AccessNoRemoteScript
AccessNoRemoteWrite
AccessRead
AccessScript
AccessSSL
AccessSSL128
AccessSSLFlags
AccessSSLMapCert
AccessSSLNegotiateCert
AccessSSLRequireCert
AccessWrite
AnonymousPasswordSync
AnonymousUserName
AnonymousUserPass
AppAllowClientDebug
AppAllowDebugging
AppFriendlyName
AppIsolated
AppOopRecoverLimit
AppPackageID
AppPackageName
AppRoot
AppWamClsID
AspAllowOutOfProcComponents
AspAllowSessionState
AspBufferingOn
AspCodepage
AspEnableApplicationRestart
AspEnableAspHtmlFallback
AspEnableChunkedEncoding
AspEnableParentPaths
AspEnableTypelibCache
AspErrorsToNTLog
AspExceptionCatchEnable
AspLogErrorRequests
AspProcessorThreadMax
AspQueueConnectionTestTime
AspQueueTimeout
AspRequestQueueMax
AspScriptEngineCacheMax
AspScriptErrorMessage
AspScriptErrorSentToBrowser
AspScriptFileCacheSize
AspScriptLanguage
AspScriptTimeout
AspSessionMax
AspSessionTimeout
AspThreadGateEnabled
488
IIsWebDirectory
AspThreadGateLoadHigh
AspThreadGateLoadLow
AspThreadGateSleepDelay
AspThreadGateSleepMax
AspThreadGateTimeSlice
AspTrackThreadingModel
AuthAnonymous
AuthBasic
AuthFlags
AuthNTLM
AuthPersistence
AuthPersistSingleRequest
AuthPersistSingleRequestIfProxy AuthPersistSingleRequestAlwaysIfProxy CacheControlCustom
CacheControlMaxAge
CacheControlNoCache
CacheISAPI
ContentIndexed
CpuAppEnabled
CpuCgiEnabled
CreateCGIWithNewConsole
CreateProcessAsUser
DefaultDoc
DefaultDocFooter
DefaultLogonDomain
DirBrowseFlags
DirBrowseShowDate
DirBrowseShowExtension
DirBrowseShowLongDate
DirBrowseShowSize
DirBrowseShowTime
DontLog
EnableDefaultDoc
EnableDirBrowsing
EnableDocFooter
EnableReverseDns
HttpCustomHeaders
HttpErrors
HttpExpires
HttpPics
HttpRedirect
IPSecurity
LogonMethod
MimeMap
PoolIDCTimeout
PutReadSize
Realm
RedirectHeaders
ScriptMaps
SSIExecDisable
UNCAuthenticationPassthrough
UploadReadAheadSize Die Methoden sind in den folgenden Abschnitten aufgelistet.
Anhang B • Referenz für IIS Admin Objects
489
AppCreate Mit dieser Methode können Sie eine Webanwendungsdefinition erstellen und als In-Process- oder Out-of-Process-Anwendung konfigurieren. Wenn unter dem angegebenen Pfad bereits eine Anwendung vorhanden ist, können Sie die Anwendung von einer In-Process- in eine Out-of-Process-Anwendung umwandeln, oder umgekehrt. Syntax objDir.AppCreate ProzInOption
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. ProzInOption gibt an, ob die zu erstellende Anwendung als In-Process-Anwendung (TRUE) oder als Out-of-Process-Anwendung (FALSE) ausgeführt werden soll. Beispiel <% Dim objDir Const INPROC = True Const OUTPROC = False Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppCreate INPROC %>
AppCreate2 Mit dieser Methode können Sie eine Webanwendungsdefinition erstellen und als In-Process-, Out-of-Process- oder als Pooled-Process-Anwendung konfigurieren. Wenn unter dem angegebenen Pfad bereits eine Anwendung vorhanden ist, können Sie einen beliebigen Prozessbereich für die Ausführung der Anwendung konfigurieren. Syntax objDir.AppCreate2 ProzInOption
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. ProzInOption ist ein binärer Wert, der angibt, ob die zu erstellende Anwendung als In-Process- (0), Out-of-Process- (1) oder als Pooled-Process-Anwendung ausgeführt werden soll. Wenn die Anwendung bereits vorhanden ist und ausgeführt wird, und Sie den Wert dieser Option ändern, wird die Anwendungsdefinition gelöscht und eine neue Anwendung erstellt, die in dem angegebenen Prozessbereich ausgeführt wird.
490
IIsWebDirectory
Beispiel <% Dim objDir Const INPROC = 0 Const OUTPROC = 1 Const POOLED = 2 Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppCreate INPROC %>
AppDelete Mit dieser Methode können Sie eine Webanwendungsdefinition unter einem Metabasisschlüssel löschen. Die Anwendung wird beendet, falls diese gerade ausgeführt wird. Wenn die Anwendung als In-Process-Anwendung unter IIS ausgeführt wird, werden sämtliche Ressourcen, die ihr zugeordnet sind, wie z.B. Out-of-Process-Anwendungen, freigegeben, wenn nicht eine andere In-ProcessAnwendung auf die Ressource verweist. Warnung Mit AppDelete durchgeführte Löschvorgänge können nicht wieder rückgängig gemacht werden. Syntax objDir.AppDelete
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppDelete %>
AppDeleteRecursive Mit dieser Methode können Sie Webanwendungsdefinitionen unter einem Metabasisschlüssel und allen Teilschlüsseln löschen. Die Anwendungen werden beendet, falls diese zurzeit ausgeführt werden. Wenn die Anwendung als In-Process-Anwendung unter IIS ausgeführt wird, werden sämtliche Ressourcen, die ihr zugeordnet sind, wie z.B. Out-of-Process-Pakete, freigegeben, wenn nicht über eine andere In-Process-Anwendung auf die Ressource verwiesen wird.
Anhang B • Referenz für IIS Admin Objects
491
Warnung Mit AppDeleteRecursive durchgeführte Löschvorgänge können nicht wieder rückgängig gemacht werden. Syntax objDir.AppDeleteRecursive
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppDeleteRecursive %>
AppDisable Mit dieser Methode können Sie eine Out-of-Process-Webanwendung deaktivieren. Alle Ressourcen der Anwendung werden freigegeben, und der Prozess der Anwendung wird beendet. Ein Zugriff auf diese Anwendung ist dann nicht mehr möglich. Mit Hilfe der Methode AppEnable können Sie eine deaktivierte Anwendung wieder aktivieren. Syntax objDir.AppDisable
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppDisable %>
AppDisableRecursive Mit dieser Methode können Sie Out-of-Process-Webanwendungen deaktivieren. Die Anwendungen unter dem angegebenen Schlüssel sowie sämtliche untergeordneten Schlüsseln werden deaktiviert. Alle Ressourcen der Anwendung werden freigegeben und die Anwendungsprozesse werden beendet. Ein Zugriff auf diese Anwendung ist dann nicht mehr
492
IIsWebDirectory
möglich. Mit Hilfe der Methode AppEnableRecursive können Sie deaktivierte Anwendungen wieder aktivieren. Die Methode hat keine Auswirkungen, wenn die Anwendungen als In-ProcessAnwendung ausgeführt werden. Syntax objDir.AppDisableRecursive
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppDisableRecursive %>
AppEnable Mit dieser Methode können Sie eine zuvor deaktivierte Webanwendung wieder aktivieren. Wenn die angegebene Anwendung nicht gelöscht wurde, wird sie mit den Komponentendiensten erneut registriert. Syntax objDir.AppEnable
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppEnable %>
AppEnableRecursive Mit dieser Methode können Sie Webanwendungsdefinitionen, die vorher mit der Methode AppDisable deaktiviert wurden, wieder aktivieren. Syntax objDir.AppEnableRecursive
Anhang B • Referenz für IIS Admin Objects
493
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppEnableRecursive %>
AppGetStatus Mit dieser Methode können Sie den aktuellen Status einer Webanwendung abrufen. Syntax varRückgabe = objDir.AppGetStatus
Parameter Die Variable varRückgabe enthält den Status der Anwendung. objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Rückgabewerte •
APPSTATUS_NOTDEFINED. Unter dem angegebenen Pfad ist keine Anwendung definiert.
•
APPSTATUS_RUNNING. Die Anwendung wird ausgeführt.
•
APPSTATUS_STOPPED. Die Anwendung wird nicht ausgeführt.
Beispiel <% Dim objDir, varRückgabe Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") varRückgabe = objDir.AppGetStatus %>
AppUnload Mit dieser Methode können Sie eine als Out-of-Process-Anwendung ausgeführte Webanwendung entfernen. Alle Ressourcen der Anwendung werden freigegeben und der Prozess der Anwendung beendet. Wenn die Anwendung als In-ProcessAnwendung ausgeführt wird, wird sie freigegeben, wenn zurzeit keine anderen Anwendungen auf diese verweisen.
494
IIsWebDirectory
Syntax objDir.AppUnload
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppUnload %>
AppUnloadRecursive Diese Methode funktioniert genauso wie die Methode AppUnload. Der Unterschied besteht darin, dass die Anwendung sowie sämtliche untergeordneten Schlüssel entfernt werden. Syntax objDir.AppUnloadRecursive
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir. Beispiel <% Dim objDir Set objDir = GetObject("IIS://computername/W3SVC/1/ROOT/AppDir") objDir.AppUnloadRecursive %>
AspAppRestart Mit dieser Methode können Sie ASP-Anwendungen über diese Methode neu starten, ohne auf die Datei global.asa zuzugreifen oder den WWW-Dienst selbst zu beenden und neu zu starten. Syntax objDir.AspAppRestart
Parameter objDir ist ein IIS Admin Object des Typs IIsWebDirectory oder IIsWebVirtualDir.
Anhang B • Referenz für IIS Admin Objects
B.18
495
IIsWebFile Mit diesem Objekt können Sie Metabasisschlüsselwerte für eine Datei in einem Webverzeichnis eines virtuellen Webservers festlegen. Vererbte Werte, die auf einer höheren Ebene in der Metabasishierarchie konfiguriert wurden, werden mit den Werten für die Metabasiseigenschaften einer bestimmten Datei überschrieben. ADsPath IIS://computername/W3SVC/n/Root/vVerzName/VerzName/DateiName
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsWebFile-Objekt. methode ist die ausgewählte Methode. Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis AccessExecute
AccessFlags
AccessNoRemoteExecute
AccessNoRemoteRead
AccessNoRemoteScript
AccessNoRemoteWrite
AccessRead
AccessSource
AccessScript
AccessSSL
AccessSSL128
AccessSSLFlags
AccessSSLMapCert
AccessSSLNegotiateCert
AccessSSLRequireCert
AccessWrite
AnonymousPasswordSync
AnonymousUserName
AnonymousUserPass
AuthAnonymous
AuthBasic
AuthFlags
AuthNTLM
AuthPersistence
496
IIsWebInfo
AuthPersistSingleRequest AuthPersistSingleRequestIfProxy AuthPersistSingleRequestAlwaysIfProxy CacheControlCustom
CacheControlMaxAge
CacheControlNoCache
CpuAppEnabled
CpuCgiEnabled
CreateCGIWithNewConsole
CreateProcessAsUser
DefaultDocFooter
DefaultLogonDomain
DontLog
EnableDocFooter
EnableReverseDns
HttpCustomHeaders
HttpErrors
HttpExpires
HttpPics
HttpRedirect
IPSecurity
LogonMethod
MimeMap
PoolIDCTimeout
PutReadSize
Realm
RedirectHeaders
ScriptMaps
SSIExecDisable
UNCAuthenticationPassthrough
UploadReadAheadSize
Methoden Methoden für ADSI-Objekte
B.19
IIsWebInfo Einige dem WWW-Dienst zugeordneten Metabasiseigenschaften sind im Teilschlüssel Info des Schlüssels W3SVC gespeichert. Mit Hilfe des Objekts IIsWebInfo können Sie Werte für diese Eigenschaften festlegen. ADsPath IIS://computername/W3SVC/INFO
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode.
Anhang B • Referenz für IIS Admin Objects
497
Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsWebInfo-Objekt. methode ist die ausgewählte Methode. Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis AdminServer
CustomErrorDescriptions
LogModuleList
ServerConfigAutoPWSync
ServerConfigFlags
ServerConfigSSL128
ServerConfigSSL40
ServerConfigSSLAllowEncrypt
Methoden Methoden für ADSI-Objekte
B.20
IIsWebServer Mit diesem Objekt können Sie Metabasiseigenschaften für einen bestimmten virtuellen Webserver festlegen und vererbbare Metabasiseigenschaften für virtuelle Verzeichnisse, Webverzeichnisse und Webdateien definieren. Es stehen ferner besondere Methoden zur Steuerung von Servervorgängen zur Verfügung, die im Verlaufe dieses Abschnitts erläutert werden. Dieses Objekt ist ein ADSI-Containerobjekt. ADsPath IIS://computername/W3SVC/N
computername kann ein beliebiger Name oder localhost sein. Syntax varRückgabe = objWebServer.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. ObjWebServer verweist auf das IIS Admin Object. methode ist die ausgewählte Methode.
498
IIsWebServer
Möglicher Objektinhalt IIsCertMapper, IIsFilters, IIsWebVirtualDir Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis AccessExecute
AccessFlags
AccessNoRemoteExecute
AccessNoRemoteRead
AccessNoRemoteScript
AccessNoRemoteWrite
AccessRead
AccessSource
AccessScript
AccessSSL
AccessSSL128
AccessSSLFlags
AccessSSLMapCert
AccessSSLNegotiateCert
AccessSSLRequireCert
AccessWrite
AdminACL
AllowKeepAlive
AllowPathInfoForScriptMappings AnonymousPasswordSync
AnonymousUserName
AnonymousUserPass
AppAllowClientDebug
AppAllowDebugging
AppFriendlyName
AppIsolated
AppOopRecoverLimit
AppPackageID
AppPackageName
AppRoot
AppWamClsID
AspAllowOutOfProcComponents
AspAllowSessionState
AspBufferingOn
AspCodepage
AspEnableApplicationRestart
AspEnableAspHtmlFallback
AspEnableChunkedEncoding
AspEnableParentPaths
AspEnableTypelibCache
AspErrorsToNTLog
AspExceptionCatchEnable
AspLogErrorRequests
AspProcessorThreadMax AspQueueConnectionTestTime AspQueueTimeout AspScriptEngineCacheMax AspScriptErrorSentToBrowser
AspRequestQueueMax
Anhang B • Referenz für IIS Admin Objects
499
AspScriptFileCacheSize
AspScriptLanguage
AspSessionMax
AspScriptTimeout
AspSessionTimeout
AspThreadGateEnabled
AspThreadGateLoadHigh
AspThreadGateLoadLow
AspThreadGateSleepDelay
AspThreadGateSleepMax
AspThreadGateTimeSlice
AspTrackThreadingModel
AuthAnonymous
AuthBasic
AuthFlags
AuthNTLM
AuthPersistence
AuthPersistSingleRequest
AuthPersistSingleRequestIfProxy AuthPersistSingleRequestAlwaysIfProxy CacheControlCustom
CacheControlMaxAge
CacheControlNoCache
CacheISAPI
CGITimeout
ConnectionTimeout
CpuAppEnabled
CpuCgiEnabled
CpuEnableActiveProcs
CpuEnableAllProcLogging
CpuEnableAppLogging
CpuEnableCgiLogging
CpuEnableEvent
CpuEnableKernelTime
CpuEnableLogging
CpuEnablePageFaults
CpuEnableProcType
CpuEnableTerminatedProcs
CpuEnableTotalProcs
CpuEnableUserTime
CpuLimitLogEvent
CpuLimitPause
CpuLimitPriority
CpuLimitProcStop
CpuLimitsEnabled
CpuLoggingInterval
CpuLoggingMask
CpuLoggingOptions
CpuResetInterval
CreateCGIWithNewConsole
CreateProcessAsUser
DefaultDoc
DefaultDocFooter
DefaultLogonDomain
DirBrowseFlags
DirBrowseShowDate
DirBrowseShowExtension
DirBrowseShowLongDate
DirBrowseShowSize
DirBrowseShowTime
DisableSocketPooling
DontLog
EnableDefaultDoc
EnableDirBrowsing
500
IIsWebServer
EnableDocFooter
EnableReverseDns
FrontPageWeb
HttpCustomHeaders
HttpErrors
HttpExpires
HttpPics
HttpRedirect
IPSecurity
LogAnonymous
LogExtFileBytesRecv
LogExtFileBytesSent
LogExtFileClientIp
LogExtFileComputerName
LogExtFileCookie
LogExtFileDate
LogExtFileFlags
LogExtFileHttpStatus
LogExtFileMethod
LogExtFileProtocolVersion
LogExtFileReferer
LogExtFileServerIp
LogExtFileServerPort
LogExtFileSiteName
LogExtFileTime
LogExtFileTimeTaken
LogExtFileUriQuery
LogExtFileUriStem
LogExtFileUserAgent
LogExtFileUserName
LogExtFileWin32Status
LogFileDirectory
LogFileLocaltimeRollover
LogFilePeriod
LogFileTruncateSize
LogOdbcDataSource
LogOdbcPassword
LogOdbcTableName
LogOdbcUserName
LogonMethod
LogPluginClsId
LogType
MaxBandwidth
MaxBandwidthBlocked
MaxConnections
MaxEndpointConnections
MimeMap
NetLogonWorkstation
NotDeletable
NTAuthenticationProviders
PasswordCacheTTL
PasswordChangeFlags
PasswordExpirePrenotifyDays
PoolIDCTimeout
ProcessNTCRIfLoggedOn
PutReadSize
Realm
RedirectHeaders
ScriptMaps
SecureBindings
ServerAutoStart
ServerBindings
ServerComment
ServerListenBacklog
ServerListenTimeout
ServerSize
Anhang B • Referenz für IIS Admin Objects
501
ServerState
SSIExecDisable
UNCAuthenticationPassthrough
UploadReadAheadSize
UseHostName Continue Diese Methode setzt einen zuvor angehaltenen Server fort. Syntax IIsWebServer.Continue
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/W3SVC/2") objServer.Continue %>
Pause Diese Methode hält den Server an. Syntax IIsWebServer.Pause
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/W3SVC/2") objServer.Pause %>
Start Diese Methode startet den Server. Syntax IIsWebServer.Start
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/W3SVC/2") objServer.Start %>
502
IIsWebService
Status Diese Methode gibt einen der folgenden Werte zurück, der den aktuellen Serverstatus angibt. •
1. Es wird gestartet.
•
2. Gestartet.
•
3. Es wird beendet.
•
4. Beendet.
•
5. Es wird angehalten.
•
6. Angehalten.
•
7. Der Server wird fortgesetzt.
Syntax IIsWebServer.Status
Stop Diese Methode beendet den Server. Syntax IIsWebServer.Stop
Beispiel <% Dim objServer Set objServer = GetObject("IIS://computername/W3SVC/2") objServer.Stop %>
B.21
IIsWebService Mit diesem Objekt können Sie Metabasiseigenschaften für einen bestimmten virtuellen Webserver festlegen und vererbbare Metabasiseigenschaften für virtuelle Verzeichnisse, Webverzeichnisse und Webdateien definieren. Dieses Objekt ist ein ADSI-Containerobjekt. ADsPath IIS://computername/W3SVC
computername kann ein beliebiger Name oder localhost sein.
Anhang B • Referenz für IIS Admin Objects
503
Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsWebServer-Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsFilters, IIsWebInfo, IIsWebServer Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis AccessExecute
AccessFlags
AccessNoRemoteExecute
AccessNoRemoteRead
AccessNoRemoteScript
AccessNoRemoteWrite
AccessRead
AccessSource
AccessScript
AccessSSL
AccessSSL128
AccessSSLFlags
AccessSSLMapCert
AccessSSLNegotiateCert
AccessSSLRequireCert
AccessWrite
AdminACL
AllowKeepAlive
AllowPathInfoForScriptMappings AnonymousPasswordSync
AnonymousUserName
AnonymousUserPass
AppAllowClientDebug
AppAllowDebugging
AppFriendlyName
AppIsolated AppPackageID
AppPackageName
AppRoot
AppWamClsID
AspAllowOutOfProcComponents
AspAllowSessionState
AspBufferingOn
AspCodepage
504
IIsWebService
AspEnableApplicationRestart
AspEnableAspHtmlFallback
AspEnableChunkedEncoding
AspEnableParentPaths
AspEnableTypelibCache
AspErrorsToNTLog
AspExceptionCatchEnable
AspLogErrorRequests
AspProcessorThreadMax AspQueueConnectionTestTime AspQueueTimeout
AspRequestQueueMax
AspScriptEngineCacheMax
AspScriptErrorMessage
AspScriptErrorSentToBrowser AspScriptFileCacheSize
AspScriptLanguage
AspSessionMax
AspScriptTimeout
AspSessionTimeout
AspThreadGateEnabled
AspThreadGateLoadHigh
AspThreadGateLoadLow
AspThreadGateSleepDelay
AspThreadGateSleepMax
AspThreadGateTimeSlice
AspTrackThreadingModel
AuthAnonymous
AuthBasic
AuthFlags
AuthNTLM
AuthPersistence
AuthPersistSingleRequest
AuthPersistSingleRequestIfProxy AuthPersistSingleRequestAlwaysIfProxy CacheControlCustom
CacheControlMaxAge
CacheControlNoCache
CacheISAPI
ContentIndexed
ConnectionTimeout
CpuAppEnabled
CpuCgiEnabled
CpuEnableActiveProcs
CpuEnableAllProcLogging
CpuEnableAppLogging
CpuEnableCgiLogging
CpuEnableEvent
CpuEnableKernelTime
CpuEnableLogging
CpuEnablePageFaults
CpuEnableProcType
CpuEnableTerminatedProcs
CpuEnableTotalProcs
CpuEnableUserTime
CpuLimitLogEvent
CpuLimitPause
CpuLimitPriority
CpuLimitProcStop
Anhang B • Referenz für IIS Admin Objects
505
CpuLimitsEnabled
CpuLoggingInterval
CpuLoggingMask
CpuLoggingOptions
CpuResetInterval
CreateCGIWithNewConsole
CreateProcessAsUser
DefaultDoc
DefaultDocFooter
DefaultLogonDomain
DirBrowseFlags
DirBrowseShowDate
DirBrowseShowExtension
DirBrowseShowLongDate
DirBrowseShowSize
DirBrowseShowTime
DirectoryLevelsToScan
DisableSocketPooling
DontLog
DownlevelAdminInstance
EnableDefaultDoc
EnableDirBrowsing
EnableDocFooter
EnableReverseDns
HttpCustomHeaders
HttpErrors
HttpExpires
HttpPics
HttpRedirect
InProcessIsapiApps
IPSecurity LogExtFileBytesRecv
LogExtFileBytesSent
LogExtFileClientIp
LogExtFileComputerName
LogExtFileCookie
LogExtFileDate
LogExtFileFlags
LogExtFileHttpStatus
LogExtFileMethod
LogExtFileProtocolVersion
LogExtFileReferer
LogExtFileServerIp
LogExtFileServerPort
LogExtFileSiteName
LogExtFileTime
LogExtFileTimeTaken
LogExtFileUriQuery
LogExtFileUriStem
LogExtFileUserAgent
LogExtFileUserName
LogExtFileWin32Status
LogFileDirectory
LogFileLocaltimeRollover
LogFilePeriod
LogFileTruncateSize
LogOdbcDataSource
LogOdbcPassword
LogOdbcTableName
LogOdbcUserName
LogonMethod
LogPluginClsId
LogType
506
IIsWebVirtualDir
MaxConnections
MaxEndpointConnections
MimeMap
NetLogonWorkstation
NTAuthenticationProviders PasswordCacheTTL
PasswordChangeFlags
PasswordExpirePrenotifyDays
PoolIDCTimeout
ProcessNTCRIfLoggedOn
PutReadSize
Realm
RedirectHeaders
ScriptMaps
ServerAutoStart
ServerBindings
ServerComment
ServerListenBacklog
ServerListenTimeout
ServerSize
SSIExecDisable
SSLUseDSMapper
UNCAuthenticationPassthrough
UploadReadAheadSize
UseHostName
WAMUserName
WAMUserPass
Methoden Methoden für ADSI-Objekte und ADSI-Containerobjekte.
B.22
IIsWebVirtualDir Mit diesem Objekt können Sie Metabasiseigenschaften für ein virtuelles Verzeichnis oder sämtliche virtuellen Verzeichnisse einer Website festlegen. Wenn Sie das Objekt IIsWebVirtualDir auf das Stammverzeichnis des Servers anwenden, gelten vererbbare Eigenschaftswerte für sämtliche virtuellen Unterverzeichnisse. Sie können Eigenschaften für ein bestimmtes virtuelles Verzeichnis festlegen, indem Sie das Objekt IIsWebVirtualDir auf ein bestimmtes virtuelles Verzeichnis anwenden. Dieses Objekt ist ein ADSI-Containerobjekt. ADsPath Der Pfad für das virtuelle Stammverzeichnis des Servers lautet: IIS://computername/W3SVC/N/ROOT
Der Pfad für ein bestimmtes virtuelles Verzeichnis lautet: IIS://computername/W3SVC/N/ROOT/vVerzName
computername kann ein beliebiger Name oder localhost sein.
Anhang B • Referenz für IIS Admin Objects
507
Syntax varRückgabe = objekt.methode
Komponenten Die Variable varRückgabe enthält den Rückgabewert der Methode. Die Variable objekt enthält das von der Methode GetObject zurückgegebene IIsWebVirtualDir-Objekt. methode ist die ausgewählte Methode. Möglicher Objektinhalt IIsWebVirtualDir, IIsWebDirectory, IIsWebFile Eigenschaften ADSI-Objekteigenschaften Eigenschaften in der Metabasis AccessExecute
AccessFlags
AccessNoRemoteExecute
AccessNoRemoteRead
AccessNoRemoteScript
AccessNoRemoteWrite
AccessRead
AccessSource
AccessScript
AccessSSL
AccessSSL128
AccessSSLFlags
AccessSSLMapCert
AccessSSLNegotiateCert
AccessSSLRequireCert
AccessWrite
AnonymousPasswordSync
AnonymousUserName
AnonymousUserPass
AppAllowClientDebug
AppAllowDebugging
AppFriendlyName
AppIsolated
AppOopRecoverLimit
AppPackageID
AppPackageName
AppRoot
AppWamClsID
AspAllowOutOfProcComponents
AspAllowSessionState
AspBufferingOn
AspCodepage
AspEnableApplicationRestart
AspEnableAspHtmlFallback
AspEnableChunkedEncoding
AspEnableParentPaths
508
IIsWebVirtualDir
AspEnableTypelibCache
AspErrorsToNTLog
AspExceptionCatchEnable
AspLogErrorRequests
AspProcessorThreadMax AspQueueConnectionTestTime AspQueueTimeout
AspRequestQueueMax
AspScriptEngineCacheMax
AspScriptErrorMessage
AspScriptErrorSentToBrowser AspScriptFileCacheSize
AspScriptLanguage
AspSessionMax
AspScriptTimeout
AspSessionTimeout
AspThreadGateEnabled
AspThreadGateLoadHigh
AspThreadGateLoadLow
AspThreadGateSleepDelay
AspThreadGateSleepMax
AspThreadGateTimeSlice
AspTrackThreadingModel
AuthAnonymous
AuthBasic
AuthFlags
AuthNTLM
AuthPersistence
AuthPersistSingleRequest
AuthPersistSingleRequestIfProxy AuthPersistSingleRequestAlwaysIfProxy CacheControlCustom
CacheControlMaxAge
CacheControlNoCache
CacheISAPI
ContentIndexed
CpuAppEnabled
CpuCgiEnabled
CreateCGIWithNewConsole
CreateProcessAsUser
DefaultDoc
DefaultDocFooter
DefaultLogonDomain
DirBrowseFlags
DirBrowseShowDate
DirBrowseShowExtension
DirBrowseShowLongDate
DirBrowseShowSize
DirBrowseShowTime
DontLog EnableDefaultDoc
EnableDirBrowsing
EnableDocFooter
EnableReverseDns
HttpCustomHeaders
HttpErrors
HttpExpires
HttpPics
Anhang B • Referenz für IIS Admin Objects
509
HttpRedirect IPSecurity
LogonMethod
MimeMap
Path
PoolIDCTimeout
PutReadSize
Realm
RedirectHeaders
ScriptMaps
SSIExecDisable
UNCAuthenticationPassthrough UNCPassword
UNCUserName
UploadReadAheadSize Methoden Das Objekt IIsWebVirtualDir unterstützt die folgenden Methoden. Hinweise zu diesen finden Sie im Abschnitt über das Objekt IIsWebDirectory.
B.23
•
AppCreate
•
AppCreate2
•
AppDelete
•
AppDeleteRecursive
•
AppDisable
•
AppDisableRecursive
•
AppEnable
•
AppEnableRecursive
•
AppGetStatus
•
AppUnload
•
AppUnloadRecursive
•
AspAppStart
Konstanten Die folgenden Konstanten werden mit den Methoden und Eigenschaften der IIS Admin Objects verwendet. Const ADS_PROPERTY_CLEAR = 1 'PutEx Const ADS_PROPERTY_UPDATE = 2 'PutEx Const APPSTATUS_NOTDEFINED = 4 'AppStatus
510
Konstanten
Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const
APPSTATUS_RUNNING = 2 'AppStatus APPSTATUS_STOPPED = 3 'AppStatus APPSTATUS_UNLOADED = 1 'AppStatus IIS_ANY_PROPERTY = 0 'GetDataPaths IIS_INHERITABLE_ONLY = 1 'GetDataPaths MD_ERROR_DATA_NOT_FOUND = &H800CC801 'GetDataPaths MD_ERROR_IISAO_INVALID_SCHEMA = &H8800CC810 'GetObject MD_BACKUP_FORCE_BACKUP = 4 'Backup MD_BACKUP_HIGHEST_VERSION = &HFFFFFFFE 'Backup, Delete, Restore MD_BACKUP_MAX_VERSION = 9999 'Limit MD_BACKUP_MAX_LEN = 100 'Limit MD_BACKUP_NEXT_VERSION = &HFFFFFFFF 'Backup MD_BACKUP_OVERWRITE = 1 'Backup MD_BACKUP_SAVE_FIRST = 2 'Backup MD_SERVER_STATE_CONTINUING = 7 'ServerState MD_SERVER_STATE_PAUSING = 5 'ServerState MD_SERVER_STATE_PAUSED = 6 'ServerState MD_SERVER_STATE_STARTING = 1 'ServerState MD_SERVER_STATE_STARTED = 2 'ServerState MD_SERVER_STATE_STOPPING = 3 'ServerState MD_SERVER_STATE_STOPPED = 4 'ServerState NOT_A_VALID_PROPERTY = &H80005006 'Various methods
Anhang C Referenz für ADSI C.1 C.2 C.3 C.4 C.5
ADSI-Objekteigenschaften ADSI-Methoden Eigenschaften von ADSI-Containerobjekten Methoden von ADSI-Containerobjekten Änderungen an ADSI unter IIS 5.0
512 512 518 519 522
512
ADSI-Objekteigenschaften
Dieser Anhang beinhaltet Erläuterungen zu den Methoden und Objekten, die für die Verwendung mit den IIS Admin Objects freigegeben sind.
C.1
ADSI-Objekteigenschaften Die folgende Liste zeigt die sechs Haupteigenschaften von IIS Admin Objects, die von allen ADSI-Objekten benötigt werden. Alle Eigenschaften sind vom Datentyp »Zeichenkette«.
C.2
Eigenschaft
Beschreibung
Name
Der zu verwendende Objektname. Beispiel: W3SVC.
ADsPath
Der Pfad, der das Objekt eindeutig identifiziert. Beispiel: IIS: //computername/W3SVC.
Class
Der Name der Schemaklasse. Beispiel: IISWebService.
GUID
Die global eindeutige Kennung des Objekts. Beispiel: {8B645678-7CF4-11CF-B24H-00AA006E1200}.
Parent
Wird für den ADsPath des übergeordneten Containerobjekts verwendet. Beispiel: IIS://computername.
Schema
Der ADsPath des Objekts. Beispiel: IIS://computername/ schema/IisWebService.
ADSI-Methoden Damit die Eigenschaften des IIS Admin Object in der Metabasis geändert werden können, müssen die so genannten ADSI-Methoden benutzt werden, die im Folgenden erläutert werden. Öffnen Sie zuerst das zu modifizierende Objekt, nehmen Sie dann die Änderungen vor und speichern Sie es dann wieder in der Metabasis. Get Mit dieser Methode holen Sie Werte eines Objek und speichern Sie in eine Variable, die Sie in Ihrem Code verwenden können. Syntax RückWert = objekt.Get(eigenschaft)
oder RückWert = objekt.eigenschaft
Komponenten RückWert ist der zurückgegebene Wert der Eigenschaft.
Anhang C • Referenz für ADSI
513
objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. eigenschaft ist die Eigenschaft des Objekts, das aus der Metabasis geholt wurde. Beispiel <% Dim objIIs, varRead, varWrite Set objIIs = GetObject("IIS://computername/W3SVC/1/Root") varRead = objIIs.Get("AccessRead") varWrite = objIIs.AccessWrite varRead = True varWrite = False objIIs.Put "AccessRead", varRead objIIs.AccessWrite = varWrite objIIs.SetInfo %>
GetDataPaths Mit dieser Methode ermitteln Sie die Pfade für alle Speicherorte einer MetabasisEigenschaft. Die Pfade sind relativ zum spezifizierten Startpfad. Syntax varList = objekt.GetDataPaths(eigenschaft, AttributFlag)
Komponenten varList enthält eine Liste aller Pfade, unter denen die angegebene Eigenschaft vorhanden ist. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. eigenschaft ist der Name der Eigenschaft, deren Pfad Sie ermitteln wollen. AttributFlag ist eines der folgenden Flags: •
IIS_ANY_PROPERTY. Findet die Pfade unabhängig davon, ob die Eigenschaft vererbbar ist oder nicht.
•
IIS_INHERITABLE_ONLY. Findet die Pfade nur, wenn die Eigenschaft vererbbar ist. Ist die Eigenschaft nicht vererbbar, dann wird die Zeichenkette MD_ERROR_DATA_NOT_FOUND zurückgegeben. Hinweis Die Anweisung For each Path in varList...Next kann verwendet werden, um einzelne Pfade in der Liste zu ermitteln.
514
ADSI-Methoden
Beispiel <% Const IIS_ANY_PROPERTY = 0 Const IIS_INHERITABLE_ONLY = 1 Const MD_ERROR_DATA_NOT_FOUND = &H800CC801 Dim objWebSvr, varList, varProperty On Error Resume Next Set objWebSvr = GetObject("IIS://computername/W3SVC/1") varProperty = "AccessFlags" varList = objWebSvr.GetDataPaths(varProperty, IIS_INHERITABLE_ONLY) If Err.Number = 0 Then Response.Write "Pfade für Eigenschaft " & varProperty & " " For each Path in varList Response.Write Path & " " Next ElseIf Err.Number = MD_ERROR_DATA_NOT_FOUND Then Response.Write "Eigenschaft ist nicht vererbbar. " ElseIf Err.Number = &H80005006 Then Response.Write "Eigenschaft existiert nicht. " Else Response.Write "Fehler " & Err.Number & " " & Err.Description End If %>
GetEx Diese Methode ermittelt einen oder mehrere Werte einer angegebenen Eigenschaft des Objekts. Enthält die Eigenschaft nur einen Wert, so wird dieser zurückgegeben; sind mehrere Werte vorhanden, dann werden alle zurückgegeben. Syntax RückWert = objekt.GetEx(eigenschaft)
Komponenten RückWert enthält den von der Methode zurückgegebenen Eigenschaftswert. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. eigenschaft ist die Eigenschaft des Objekts, das aus der Metabasis geholt wurde. Rückgabewert Der Wert der Eigenschaft. Beispiel <% Dim objIIs, varList
Anhang C • Referenz für ADSI
515
Set objIIs = GetObject("IIS://computername/W3SVC/Info") varList = objIIs.GetEx("CustomErrorDescriptions") objIIs.PutEx 2, "CustomErrorDescriptions", varList objIIs.SetInfo %>
GetInfo Diese Methode holt die in der Metabasis vorhandenen Werte des Objekts. Mit den zurückgegebenen Daten werden die Objekteigenschaften neu initialisiert. Syntax objekt.GetInfo
Komponenten objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Beispiel <% Dim objIIs Set objIIs = GetObject("IIS://computername/W3SVC/1/Root") ' Hier folgt der Code, der die Eigenschaften modifiziert. objIIs.GetInfo %>
GetPropertyAttribObj Mit dieser Methode ermitteln Sie das Objekt, das die Attribute der Eigenschaften enthält. Sie können diese Angabe dann verwenden, um einzelne Attribute zu finden. Syntax Initialisierung: objPropAtt = objekt.GetPropertyAttribObj (eigenschaft)
Verwendung: BoolescherRückWert = PropAttObj.Attribute
Komponenten objPropAtt referenziert ein Objekt, dass die Eigenschaftsattribute von eigenschaft enthält. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde.
516
ADSI-Methoden
eigenschaft ist eine Zeichenkette, die den Namen der Eigenschaft enthält, deren Attribute Sie anfordern. BoolescherRückWert ist ein Boolescher Wert, der anzeigt, ob das durch attribut bezeichnete Attribut aktiviert ist oder nicht. Attribut
Beschreibung
Inherit
Zeigt an, ob das Objekt vererbbar ist.
PartialPath
Zeigt an, ob ein Teilpfad vorhanden ist.
Secure
Zeigt an, ob die Eigenschaft sicher ist.
Reference
Zeigt an, ob die Eigenschaft über eine Referenz erhalten wurde.
Volatile
Zeigt an, ob die Eigenschaft flüchtig ist.
IsInherited
Zeigt an, ob die Eigenschaft vererbt wurde.
InsertPath
Zeigt an, ob eine Zeichenkette in einer Eigenschaft einen speziellen Einfügewert enthält.
AllAttributes
Enthält die in dieser Tabelle aufgelisteten Attribute als Wert vom Typ Long.
Tab. C.1: Objektattribute
Beispiel <% Dim WebServerObj Dim BoolescherRückWert 'Objekt für das Basisverzeichnis des ersten virtuellen Webservers öffnen. Set WebServerObj = GetObject("IIS://MyComputer/W3SVC/1/Root") propAttribObj = WebServerObj.GetPropertyAttribObj ("Name") BoolescherRückWert = propAttribObj.Inherit %>
Hinweis Diese Eigenschaft unterstützt die Methoden Get und Put nicht – Sie müssen statt dessen die Syntax objekt.eigenschaft verwenden. Put Mit dieser Methode weisen Sie der Eigenschaft eines Objekts einen Wert zu. Syntax objekt.Put eigenschaft, wert
oder
Anhang C • Referenz für ADSI
517
objekt.eigenschaft = wert
Komponenten objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. eigenschaft ist eine Eigenschaft des abgefragten Objekts. wert ist der Wert dieser Eigenschaft. Beispiel <% Dim objIIs, varRead Set objIIs = GetObject("IIS://computername/W3SVC/1/Root") varRead = objIIs.Get("AccessRead") varRead = True objIIs.Put "AccessRead", varRead objIIs.SetInfo %>
PutEx Mit dieser Methode weisen Sie einer einzelnen oder auch mehreren Einstellungen einer Eigenschaft, die über mehrere Einstellmöglichkeiten verfügt, einen bzw. mehrere Werte zu. Syntax objekt.PutEx steuercode, eigenschaft, wert
Komponenten objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. steuercode legt fest, ob die Eigenschaft aktualisiert wird, oder ob sie aus dem Objekt entfernt wird. Der Wert kann wahlweise ADS_PROPERTY_UPDATE (Wert 2) zum Aktualisieren oder ADS_PROPERTY_CLEAR (Wert 1) zum Löschen sein. eigenschaft ist eine Eigenschaft des abgefragten Objekts. wert ist der Wert dieser Eigenschaft. Wird das Objekt entfernt (steuercode = ADS_PROPERTY_CLEAR), dann ist wert eine leere Zeichenkette. Beispiel <% Dim objIIs, varList Set objIIs = GetObject("IIS://computername/W3SVC/Info") varList = objIIs.GetEx("CustomErrorDescriptions")
518
Eigenschaften von ADSI-Containerobjekten
objIIs.PutEx 2, "CustomErrorDescriptions", varList objIIs.PutEx 1, "ObsoleteProperty", "" objIIs.SetInfo %>
SetInfo Diese Methode schreibt die Eigenschaftswerte in die Metabasis. Sie müssen diese Methode aufrufen, um Änderungen in der Metabasis zu speichern. Alle geänderten Werte werden beim Aufruf gespeichert, nicht geänderte Werte werden nicht angerührt. Syntax objekt.SetInfo
Komponenten objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Beispiel <% Dim objIIs Set objIIs = GetObject("IIS://computername/W3SVC/1/Root") ' Code, der Eigenschaften ändert objIIs.SetInfo %>
C.3
Eigenschaften von ADSI-Containerobjekten ADSI-Objekte, die andere ADSI-Objekte enthalten können, werden als ADSIContainerobjekte bezeichnet. ADSI-Containerobjekte können ADSI-Containermethoden und -eigenschaften implementieren. In diesem Abschnitt zeigen wir zwei schreibgeschützte ADSI-Containereigenschaften. •
_NewEnum. Diese Eigenschaft gibt ein Auflistungsobjekt (»Enumerator«) zurück, in dem die abgefragten Objekte abgelegt werden können. Das Objekt kann von jeder Skriptsprache mit Automationsaktivierung – etwa VBScript – zum Abarbeiten der Objektsammlung und zur Manipulation der Objekte mit Hilfe einer For Each-Schleife verwendet werden.
•
Count. Diese Eigenschaft beinhaltet die Anzahl der Objekte im Containerobjekt. Mit ihr können Sie bestimmen, wie viele Objekte im Container vorhanden sind, oder Sie können die Objekte mit Hilfe dieser Eigenschaft in einer For…Next-Schleife abarbeiten.
Anhang C • Referenz für ADSI
C.4
519
Methoden von ADSI-Containerobjekten Mit den fünf Eigenschaften, die für ADSI-Containerobjekte vorhanden sind, können Sie Objekte in einem Containerobjekt manipulieren. Hinweis Wenn das IIS Admin Object ebenfalls ein Containerobjekt ist, dann behält es seine eigenen ADSI-Objekteigenschaften und -methoden. Ferner gelten hierfür auch alle IIS-spezifischen Methoden und die zugehörigen Metabasis-Eigenschaften CopyHere Mit dieser Methode kopieren Sie ein Objekt in einen Container. Syntax Set objKopie = objekt.CopyHere(Name, NameNeu)
Komponenten objKopie wird für den Zugriff auf das Objekt verwendet, dass in den Container kopiert wurde. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Name ist der Name des zu kopierenden Objekts. NameNeu ist der neue Name für das kopierte Objekt. Hinweis Die Variable objKopie erhält nur einen Zeiger auf das Objekt; das Objekt selbst bleibt im Container. Jedem, der sich mit der C- oder C++-Programmierung auskennt, wird dieses Verhalten bekannt vorkommen. Beispiel <% Dim ToobjDir, FromobjDir, RootobjDir Set RootobjDir = GetObject("IIS://computername/W3SVC/4/ROOT") Set ToobjDir = RootVDirObj.CopyHere("VDir1", "VDir2") RootobjDir.SetInfo %>
Create Diese Methode wird benutzt, um ein neues Objekt in einem Container zu erstellen.
520
Methoden von ADSI-Containerobjekten
Syntax Set objNewObj = objekt.Create(Typ, Name)
Komponenten objNewObj wird für den Zugriff auf das Objekt verwendet, dass im Container erstellt wurde. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Typ ist der Typ des zu erstellenden IIS Admin Object. Name ist der Name des zu erstellenden Objekts. Beispiel <% Dim objWebService, objServer Set objWebService = GetObject("IIS://computername/W3SVC") Set objServer = objWebService.Create("IIsWebServer", "3") %>
Delete Mit dieser Methode wird ein Objekt aus einem Container gelöscht. Syntax objekt.Delete Typ, Name
Komponenten objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Typ ist der Typ des zu löschenden IIS Admin Object. Name ist der Name des zu löschenden Objekts. Hinweis Wenn das zu entfernende Containerobjekt Bestandteil einer Anwendung ist, dann entfernt die Methode Delete zunächst die Anwendungsdefinition und erst dann das Objekt. Beispiel <% Dim objWebService Set objWebService = GetObject("IIS://computername/W3SVC") objWebService.Delete "IIsWebServer", "4" %>
Anhang C • Referenz für ADSI
521
GetObject Mit dieser Methode greifen Sie auf ein Objekt in einem Container zu und übergeben es einer aufrufenden Prozedur. Syntax Set objUnterObj = objekt.GetObject(Klasse, Name)
Komponenten objUnterObj wird für den Zugriff auf das Objekt benutzt. Die Methode arbeitet exakt so wie die ASP-Funktion GetObjekt. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Klasse ist die Klasse des zu holenden Objekts. Name ist der Name des zu holenden Objekts. Hinweis Die Variable objUnterObj erhält nur einen Zeiger auf das Objekt; das Objekt selbst bleibt im Container. Beispiel <% Dim objWebService, objServer Set objWebService = GetObject("IIS://computername/W3SVC") Set objServer = objWebService.GetObject("IIsWebServer", "3") %>
MoveHere Diese Methode verschiebt ein Objekt in den Container. Außerdem entfernt es das Objekt im ursprünglichen Container. Syntax Set objMoved = objekt.MoveHere(Name, NameNeu)
Komponenten objMoved wird für den Zugriff auf das zu verschiebende Objekt benutzt. objekt beinhaltet ein IIS Admin Object, das durch den Vorgang GetObject zurückgegeben wurde. Name ist der Name des zu verschiebenden Objekts. NameNeu ist der neue Name für das verschobene Objekt.
522
Änderungen an ADSI unter IIS 5.0
Hinweis Die Variable objMoved erhält nur einen Zeiger auf das Objekt; das Objekt selbst bleibt im Container. Beispiel <% Dim Set Set Set Set %>
C.5
ToobjDir, FromobjDir, RootobjDir RootobjDir = GetObject("IIS://computername/W3SVC/3/ROOT") FromobjDir = GetObject("IIS://computername/W3SVC/3/ROOT/VDir1") ToobjDir = RootobjDir.MoveHere("VDir1", "VDir2") FromobjDir = nothing
Änderungen an ADSI unter IIS 5.0 In diesem Abschnitt werden neue und geänderte Merkmale von ADSI unter IIS 5.0 aufgelistet.
C.5.1
Leistungsmerkmale von IIS 5.0 Eines der Merkmale von IIS 4.0, das hin und wieder zu Problemen mit der Systemleistung führte, war die Verwendung von Sockets für Websites. Da jede Site an eine eigene IP-Adresse gebunden werden musste, benötigte sie für den Betrieb auch einen eigenen Socket. Das bedeutete natürlich auch, dass jede neue Website zur Kommunikation auch einen Socket öffnen musste. Diese Sockets verwendeten nicht ausgelagerten Speicher und jeder neu geöffnete Socket beanspruchte noch mehr Speicher. Unter IIS 5.0 können Websites so konfiguriert werden, dass alle über eine eigene IP-Adresse verfügen, aber die gleiche Anschlussadresse verwenden. Auf diese Weise können die Sites auch den gleichen Socket nutzen. Es muss also nicht mehr für jede Site ein neuer Socket geöffnet werden, wodurch der Speicherbedarf drastisch sinkt. Manche Sites benötigen aus Sicherheitsgründen nach wie vor einen dedizierten Socket. Eine solche Konfiguration können Sie vornehmen, indem Sie der Eigenschaft DisableSocketPooling den Wert TRUE zuweisen. Nehmen Sie diese Einstellung aber in jedem Fall auf Site- und nicht auf der Computerebene vor.
C.5.2
Unter IIS 5.0 entfernte Eigenschaften Microsoft hat die ADSI-Eigenschaft AspMemFreeFactor unter IIS 5.0 entfernt.
Anhang C • Referenz für ADSI
C.5.3
523
Neue Eigenschaften unter IIS 5.0 Die folgenden ADSI-Eigenschaften wurden unter IIS 5.0 hinzugefügt. AccessSource
AspEnableApplicationRestart
AspEnableAspHtmlFallback
AspEnableChunkedEncoding
AspEnableTypeLibCache
AspErrorsToNTLog
AspProcessorThreadMax
AspQueueConnectionTestTime
AspRequestQueueMax
AspSessionMax
AspTrackThreadingModel
CPUAppEnabled
CPUCGIEnabled
CPUCGILimit
CPUEnableActiveProcs
CPUEnableAllProcLogging
CPUEnableAppLogging
CPUEnableCGILogging
CPUEnableEvent
CPUEnableKernelTime
CPUEnablePageFaults
CPUEnableProcType
CPUEnableTerminatedProcs
CPUEnableTotalProcs
CPUEnableUserTime
CPULimitLogEvent
CPULimitPause
CPULimitPriority
CPULimitProcStop
CPULimitsEnabled
CPULoggingInterval
CPULoggingMask
CPULoggingOptions
CPUResetInterval
DisableSocketPooling
HcCacheControlHeader
HcCompressionBufferSize
HcCompressionDirectory
HcCompressionDll
HcCreateFlags
HcDoDiskSpaceLimiting
HcDoDynamicCompression
HcDoOnDemandCompression
HcDoStaticCompression
HcDynamicCompressionLevel
HcExpiresHeader
HcFileExtensions
HcFilesDeletedPerDiskFree
HcIoBufferSize
HcMaxDiskSpaceUsage
HcMaxQueueLength
HcMimeType
HcMinFileSizeForComp
HcNoCompressionForHttp10
HcNoCompressionForProxies
HcNoCompressionForRange
HcOnDemandCompLevel
HcPriority
HcSendCacheHeaders
LogCustomPropertyDataType
524
Änderungen an ADSI unter IIS 5.0
LogCustomPropertyHeader
LogCustomPropertyID
LogCustomPropertyMask
LogCustomPropertyName
LogCustomPropertyServicesString
NotDeletable
SSLUseDSMapper
C.5.4
Änderungen bei den Eigenschaftstypen Bei den folgenden vier Eigenschaften wurden unter IIS 5.0 Änderungen an den Schlüsseltypen vorgenommen. Diese werden in Anhang D näher beschrieben.
C.5.5
•
KeyType
•
FrontPageWeb
•
CacheISAPI
•
AspTrackThreadingModel
Änderungen bei den Eigenschaften unter IIS 5.0 Für die Eigenschaft ScriptMaps wurde bei der aktuellen Version von IIS 5.0 eine Syntaxänderung implementiert. Microsoft hat den Befehlsausschluss durch einen Einschluss benötigter Befehle ersetzt. Das bedeutet, dass die Befehle (»Verbs«) nun in der Eigenschaftssyntax enthalten sein müssen. Weitere Informationen zum Einschluss von Befehlen finden Sie in Anhang D unter ScriptMaps.
Anhang D Skriptreferenz D.1 D.2
Referenz: @-Anweisungen Referenz für die Datei global.asa
526 529
526
Referenz: @-Anweisungen
In diesem Anhang finden Sie Referenzinformationen zu den @-Anweisungen, die Bestandteil von IIS 5.0 sind, und zur Datei global.asa. Auf der MSDN-Website von Microsoft finden Sie eine extrem umfassende Referenz zu VBScript und JScript, die Ihnen Informationen und Tutorien zu beiden Sprachen anbietet. Ferner finden Sie Referenzen zu anderen Skriptsprachen mit hoher Verbreitung im Internet – insbesondere natürlich auf Sites von Anbietern dieser Sprachen.
D.1
Referenz: @-Anweisungen Dieser Abschnitt erläutert die @-Verarbeitungsanweisungen, die zur Übermittlung von Verarbeitungsdaten an ISS dienen, in Zusammenhang mit Ihren ASPSkripts. @CODEPAGE Mit dieser Anweisung wird eine Codepage ausgewählt, die durch Ihre ASP-Datei verwendet wird. Die Codepage definiert den zu verwendenden Zeichensatz auf gleiche Weise, wie dies eine Textverarbeitung tut. Syntax <%@ CODEPAGE = codepage %>
Die Variable codepage bezeichnet hier eine gültige Codepage, die auf der Seite zu verwenden ist. Der Wert kann durch die Eigenschaft Session.Codepage überschrieben werden; dies gilt dann aber nur für die aktuelle Sitzung. Sobald diese endet, wird der Wert wieder auf die vorherige Codepage zurückgesetzt. Einige der häufiger verwendeten Codepages sind in der folgenden Tabelle aufgelistet. Codepage
Sprache
437
Englisch (USA)
850
Multilingual (Latin 1)
852
Slawisch
855
Kyrillisch (Russisch)
857
Türkisch
860
Portugiesisch
861
Isländisch
863
Kanadisches Französisch
865
Nordisch
Tab. D.1: Codeseiten und die zugeordneten Sprachen
Anhang D • Skriptreferenz
Codepage
527
Sprache
866
Russisch
869
Modernes Griechisch
932
Japanisch
936
Chinesisch (VRC)
950
Chinesisch (Taiwan)
Tab. D.1: Codeseiten und die zugeordneten Sprachen (Forts.)
Diese Codepages werden normalerweise unter den LÄNDEREINSTELLUNGEN auf Ihrem Windows-Computer eingestellt. Wenn die Codepagedefinitionen nicht auf dem Rechner installiert sind, erhalten Sie einen ASP-Fehler. @ENABLESESSIONSTATE Diese Anweisung wird zum Aktivieren und Deaktivieren des Sitzungsstatus verwendet. Es handelt sich um einen booleschen Wert, der nur die Einstellungen TRUE und FALSE akzeptiert. Wenn Sie auf Ihrer Website keine Sitzungen einsetzen, dann sollten Sie den Wert FALSE zuweisen. Dadurch können Sie die Leistung Ihres Servers verbessern, denn in diesem Fall muss IIS Sitzungsvariablen in Skripts nicht bearbeiten. Syntax <%@ ENABLESESSIONSTATE=TRUE|FALSE %>
Durch Zuweisung von TRUE aktivieren Sie die Verwaltung des Sitzungsstatus auf der ASP-Seite, über FALSE deaktivieren Sie sie. @LANGUAGE Diese Anweisung bezeichnet die Skriptsprache, die auf der ASP-Seite verwendet wird. Diese Sprache muss auf dem Server installiert sein. Bei der Installation von IIS werden die Sprachen VBScript und JScript automatisch installiert. Die unter den IIS-Eigenschaften festgelegte Standardsprache ist VBScript. Diese Sprache muss deswegen nicht im Header einer ASP-Datei spezifiziert werden. Syntax <%@ LANGUAGE=Jscript|VBScript|AndereSkriptSprache %>
AndereSkriptSprache ist der Name einer beliebigen anderen Skriptsprache, für die Sie eine Skript-Engine installiert haben. Mit IIS Admin Objects können Sie die Standardskriptsprache über die Eigenschaft AspScriptLanguage ändern. Diese Eigenschaft kann auf der Ebene des WWW-Dienstes, des Webservers, eines virtuellen oder physikalischen Verzeichnisses gesetzt werden.
528
Referenz: @-Anweisungen
Alternativ können Sie die Standardskriptsprache durch Änderung der Eigenschaften einer Website austauschen. Öffnen Sie das Dialogfeld EIGENSCHAFTEN der Website, auf der Sie die Standardsprache ändern wollen, wählen Sie zunächst die Schaltfläche BEARBEITEN bei HAUPTEIGENSCHAFTEN und aktivieren Sie anschließend die Registerkarte BASISVERZEICHNIS. Klicken Sie dort auf die Schaltfläche KONFIGURATION, die Sie im Abschnitt ANWENDUNGSEINSTELLUNG unten auf der Registerkarte finden. Nun wird das Dialogfeld ANWENDUNGSKONFIGURATION aufgerufen. Wählen Sie dort die Registerkarte ANWENDUNGSOPTIONEN und ändern Sie die Einstellung ASP-STANDARDSPRACHE nach Bedarf. @LCID LCID steht für »locale identifier« (Gebietsschemakennung). Sie verwenden diese Anweisung, um den entsprechenden Wert einer Webseite basierend auf den auf dem Computer installierten Gebietsschemata zu setzen. Bei der Kennung handelt es sich um eine internationale numerische Standardabkürzung. Indem Sie den Wert setzen, bestimmen Sie, welche Zahlen- und Währungsformate, welche Trennzeichen und Formate für Datum und Uhrzeit verwendet werden. LCID verwendet zwei vordefinierte Werte für das Gebietsschema. LOCALE_ SYSTEM_DEFAULT bezeichnet das Standardgebietsschema des lokalen Systems, LOCALE_USER_DEFAULT das Gebietsschema des aktuellen Benutzers. Syntax <%@ LCID=GebietsschemaID %>
Die Variable GebietsschemaID enthält einen gültigen LCID-Eintrag. @TRANSACTION Wenn Sie besorgt sind, dass Daten während der Übermittlung verloren gehen könnten, dann können Sie die COM-Fähigkeiten von Windows 2000, IIS und Visual Basic nutzen, indem Sie festlegen, dass Transaktionen verwendet werden. Transaktionen dienen dazu, sicherzustellen, dass eine Datenübertragung entweder vollständig oder gar nicht durchgeführt wird. Ein gutes Beispiel hierzu ist Nutzung von ATM. Wenn eine ATM-Transaktion aus irgendeinem Grund unterbrochen wird, dann wünschen Sie natürlich nicht, dass Ihr Konto mit Gebühren für eine Buchung belastet wird, die gar nicht stattgefunden hat. Dieses Problem wird mit Transaktionen gelöst. Durch die Anweisung @TRANSACTION teilen Sie IIS mit, dass Sie Transaktionen für das aktuelle Skript verwenden wollen. In diesem Fall erstellen die Komponentendienste auf dem Computer das benötigte Objekt, um die Bearbeitung zu überwachen und sicherzustellen, dass die Transaktion auch tatsächlich wie gewünscht durchgeführt wird.
Anhang D • Skriptreferenz
529
Syntax <%@ TRANSACTION=wert %>
Die Variable wert kann einen der folgenden Werte haben: •
Required. In diesem Fall initiiert das Skript eine Transaktion.
•
Requires_New. Auch hier wird eine Transaktion initiiert.
•
Supported. Es wird keine Transaktion initiiert.
•
Not-Supported. Es wird keine Transaktion initiiert. Hinweis Die Anweisung @TRANSACTION muss in der ersten Zeile der Seite stehen, damit IIS keinen Fehler erzeugt. Sie müssen außerdem sicherstellen, dass die Anweisung auf jeder Seite vorhanden ist, die Transaktionen benötigt.
D.2
Referenz für die Datei global.asa Bei der Datei global.asa handelt es sich um eine optionale Datei, die zur Deklaration von Objekten für ASP-Seiten mit dem Wirkungsbereich (»Scope«) Session oder Application benutzt wird. Die Datei muss im Basisverzeichnis der Anwendung abgelegt sein, und jeder Anwendung darf nur eine global.asa-Datei zugeordnet sein. Die Datei global.asa darf nur die folgenden Elemente enthalten: •
-Deklarationen. Diese Deklarationen werden zur Erstellung von Objekten auf dem Server benutzt, die für die Bereiche Session oder Application benötigt werden. Ein Beispiel könnte etwa so aussehen:
PROGID="MSWC.AdRotator">
Hierdurch wird ein Ad Rotator-Objekt erstellt, das im Bereich Session (d.h. nur für die aktuelle Sitzung) auf dem Server ausgeführt wird. •
TypeLibrary-Deklarationen. Typbibliotheken sind Dateien, die Daten über solche Objekte enthalten, die von COM-Komponenten unterstützt werden. Weitere Informationen über TypeLibrary finden Sie weiter unten in diesem Anhang unter der Überschrift »TypeLibrary-Deklarationen«.
•
Anwendungsereignisse. Hierbei handelt es sich um Ereignisse wie Application_OnStart oder Application_OnEnd. Diese werden im Verlauf dieses Anhangs unter der Überschrift »Anwendungsereignisse« behandelt.
530
Referenz für die Datei global.asa
•
Sitzungsereignisse. Es gibt zwei Sitzungsereignisse, nämlich Session_OnStart und Session_OnEnd. Diese werden im Verlauf dieses Anhangs unter der Überschrift »Sitzungsereignisse« behandelt.
Sie können die Verwendung der Datei global.asa in jeder unterstützten Sprache festschreiben. Skripts, die nicht von den <SCRIPT>-Tags umschlossen sind, verursachen Fehler. HTML-Befehle in der Datei global.asa werden ebenso ignoriert wie von Tags umschlossene Skriptteile, die nicht durch Anwendungs- oder Sitzungsereignisse benutzt werden. Wenn Sie bei laufenden Anwendungen oder Sitzungen Änderungen an der Datei global.asa vornehmen, dann werden diese erst übernommen, wenn alle Anwendungen und Sitzungen abgeschlossen sind. Der Server kompiliert die Datei global.asa dann neu und speichert die Änderungen. Hinweis Wenn Sie an der Datei global.asa Änderungen vornehmen und diese speichern, verarbeitet der Server währenddessen aktive Sitzungen und Anwendungen unbeeindruckt weiter, bis diese beendet werden. Es ist in diesem Fall allerdings nicht möglich, neue Verbindungen herzustellen, solange die Datei global.asa noch nicht wieder kompiliert wurde. Wenn Sie mit einer global.asa-Datei arbeiten und Prozeduren in Ihrem ASP-Code verwenden, dann müssen Sie immer bedenken, dass alle Prozeduren oder Funktionen, die in der Datei global.asa definiert wurde, für die Prozeduren in Ihrem ASP-Code nicht zur Verfügung stehen. Diese Prozeduren und Funktionen in der Datei global.asa sind nur für solche Skripts vorhanden, die die Ereignisse Application_OnStart, Application_OnEnd, Session_OnStart und Session_OnEnd aufrufen. Wenn Sie Prozeduren oder Funktionen für alle oder eine Gruppe von Anwendungen verfügbar machen wollen, empfehle ich Ihnen daher, die Prozedur in einer Datei zu erstellen und dieses File über #include in diejenigen Seiten mit einzuschließen, welche die Funktionalität der Prozedur benötigen.
D.2.1
Anwendungsereignisse Wenn Sie eine ASP-Anwendung erstellen, die unter IIS laufen soll, dann liegen die Anwendung und alle zugehörigen Dateien in einem Basisverzeichnis oder in gegebenenfalls benötigten Unterverzeichnissen. Wenn nun ein Benutzer auf eine Webseite zugreift, die den ASP-Code enthält, dann startet er dadurch diese Anwendung. Beim Anwendungsstart sucht der Server im Basisverzeichnis der Anwendung nach der Datei global.asa; ist diese vorhanden, dann arbeitet er das Ereignisskript Application_OnStart ab. Wenn die Anwendung dann endet, wird das Skript Application_OnEnd verarbeitet.
Anhang D • Skriptreferenz
531
Application_OnStart Dieses ist das beim Start einer Anwendung zuerst zu verarbeitende Ereignis. Das Ereignis Session_OnStart wurde noch nicht verarbeitet, und Skripts im Ereignis Session_OnStart stehen infolgedessen Ihrem Code noch nicht zur Verfügung. Die einzigen Objekte, die bis jetzt für Ihren Code vorhanden sind, sind Application und Server; alle Verweise auf andere Objekte erzeugen einen Fehler. Syntax <SCRIPT LANGUAGE=SkriptSprache RUNAT=Server> Sub Application_OnStart Hier ist der Code End Sub
Die Variable SkriptSprache bezeichnet die verwendete Skriptsprache. Beispiel Sub Application_OnStart Application("PageCounter") = 0 End Sub
Dieser kleine Codeausschnitt demonstriert, wie das Ereignis Application_OnStart verwendet wird, um einen Seitenzähler auf 0 zurückzusetzen (in diesem Beispiel gehen wir davon aus, dass dieser Zähler bei jedem Start einer bestimmten Anwendung zurückgesetzt werden soll). Eine andere Möglichkeit wäre zu ermitteln, wie oft während einer Anwendungssitzung auf die Seite zugegriffen wird. Es gibt weitere Methoden des Objekts Application, die Sie in Ihrem Skriptcode verwenden können, so etwa Application.Lock oder Application.Unlock. Diese beiden Methoden verhindern Änderungen am Application-Objekt, solange ein Benutzer darauf in irgendeiner Weise zugreift. Die Methoden werden allerdings von Ereignis Application_OnStart nicht benötigt, da das Ereignis nur einmal aufgerufen wird. Application_OnEnd Wenn der gesamte Code der Sitzung beendet ist und das Ereignis Session_OnEnd abgearbeitet wurde, dann sind die letzten noch verbleibenden Objekte für Ihre Anwendung Server und Application. Dies ist allerdings kein Problem, da Sie normalerweise das Ereignis Application_OnEnd verwenden, um alle auf Anwendungsebene deklarierten Objekte auf »Nichts« zu setzen und den entsprechenden Speicher so freizugeben.
532
Referenz für die Datei global.asa
Syntax <SCRIPT LANGUAGE= SkriptSprache RUNAT=Server > Sub Application_OnEnd Hier ist der Code End Sub
Die Variable SkriptSprache bezeichnet die verwendete Skriptsprache. Sie können mehrere Skriptsprachen auf der Seite einsetzen, die dann zwischen den gleichen <SCRIPT>-Tags kombiniert werden. Beispiel <SCRIPT LANGUAGE=VBScript RUNAT=Server> Hier ist der Code
Hinweis Sie können die Methode MapPath aus dem Skript Application_OnEnd heraus nicht aufrufen.
D.2.2
Sitzungsereignisse Wenn ein neuer Client mit dem Server eine Verbindung herstellt und eine Anwendung zu starten versucht, dann initiiert der Server für diesen Benutzer eine neue Sitzung. Diese dauert solange, bis entweder für eine gewisse Zeitspanne keine Clientaktivitäten mehr festgestellt wurden (Timeout) oder die Methode Abandon aufgerufen wurde. Für Sitzungen gibt es zwei Ereignisse, nämlich Session_OnStart und Session_ OnEnd. Diese Methoden können Skripts enthalten, die in der Datei global.asa ausgeführt werden, wenn eine Anwendung gestartet wird. Hinweis Die Sitzungsüberwachung ist standardmäßig aktiv. Sie kann, wie weiter oben beschrieben, mit Hilfe der Anweisung @ENABLESESSIONSTATE deaktiviert werden. Session_OnStart Wenn ein Benutzer eine Webseite anfordert, die eine Anwendung enthält, dann wird das Ereignis Session_OnStart verarbeitet, bevor die Seite ausgeführt und an den Benutzer zurückgegeben wird. Aus diesem Grund bietet es sich an, in diesem Ereignis Code abzulegen, der globale Systemvariablen initialisiert und mit Werten belegt.
Anhang D • Skriptreferenz
533
Für dieses Ereignis sind die Objekte Application, ObjectContext, Response, Request und Server verfügbar. Syntax <SCRIPT LANGUAGE= SkriptSprache RUNAT=Server> Sub Session_OnStart Hier ist der Code End Sub
Die Variable SkriptSprache bezeichnet eine gültige Skriptsprache, die auf dem Computer installiert ist. Beispiel <SCRIPT RUNAT=Server LANGUAGE=VBScript> Sub Session_OnStart Dim startPage, currentPage startPage = "/MeineAnwendung/Startseite.asp" currentPage = Request.ServerVariables("SCRIPT_NAME") If strcomp(currentPage,startPage,1) then Response.Redirect(startPage) End If End Sub
Dieses Codebeispiel funktioniert nur mit Browsern, die Cookies unterstützen, denn es verwendet die Eigenschaft SessionID (Sitzungskennung). Verwendet der Benutzer einen Browser, der keine Cookies unterstützt, dann wird bei jedem Aufruf der Seite eine neue Sitzung initiiert. Warnung Wird in Ihrem Skript die Methode Redirect benutzt, dann sollten Sie beachten, dass der gesamte auf Redirect folgende Code nicht verarbeitet wird. Aus diesem Grund ist es ratsam, den Aufruf der Methode an das Ende des Skripts im Ereignis Session_OnStart zu setzen. Session_OnEnd Dieses Ereignis findet statt, wenn die Sitzung aufgrund eines Timeouts oder durch die Methode Abandon beendet wird. Die einzigen für dieses Ereignis noch vorhandenen Objekte sind Application, Server und Session. Syntax <SCRIPT LANGUAGE= SkriptSprache RUNAT=Server> Sub Session_OnEnd
534
Referenz für die Datei global.asa
Hier ist der Code End Sub
Die Variable SkriptSprache bezeichnet die auf der Seite verwendete Skriptsprache. Beispiel <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnEnd Set objSomeObject = Nothing End Sub
Hinweis Aus diesem Ereignis heraus können Sie die Methode MapPath nicht aufrufen. Dieses Ereignis ist der richtige Platz für alle Codezeilen, die der Löschung von Sitzungsvariablen dienen.
D.2.3
-Deklarationen
Das Tag ist ein in sich abgeschlossenes Tag, das außerhalb der <SCRIPT>-Tags vorhanden sein kann. Es wird verwendet, um globale Objekte zu erstellen, die von einer Anwendung oder Sitzung verwendet werden. Wenn die Skripts in der Datei global.asa verarbeitet werden, werden die Objekte zur gleichen Zeit erstellt. Syntax Hier ist der Code
bereich bezeichnet den Bereich des Objekts. In der Datei global.asa ist dies wahlweise Application oder Session. name gibt dem Objekt einen Namen, über den es im Code aufgerufen werden kann. ProgID ist eine Objektkennung, die einer Klassenkennung zugeordnet ist; normalerweise ist das Format dieser Kennung anbieter.komponente.version. ClassID ist eine eindeutige Kennung eines COMKlassenobjekts.
Anhang D • Skriptreferenz
535
Hinweis Sie müssen im -Tag entweder eine PROGID oder eine CLASSID spezifizieren. Beispiel Hier ist der Code
Dieses Beispiel erstellt eine ADODB-Datenbankverbindung mit dem Bereich Session (d.h. für die aktuelle Sitzung). Durch Deklaration der Variablen in der Datei global.asa können Sie diese überall in Ihrem Skriptcode verwenden. Dies ist sinnvoll, wenn Sie mehrere Webseiten haben, die auf die gleiche Datenbank zugreifen müssen – wenn Sie die Variable nicht in der Datei global.asa deklarieren würden, dann müsste auf jeder Seite eine ADODB-Verbindung deklariert werden.
D.2.4
TypeLibrary-Deklarationen TypeLibrary-Deklarationen verwenden Sie zur Angabe von Informationen über Objekte und Typen, die von COM-Komponenten unterstützt werden. Sie können dann durch Angabe des Typbibliotheksnamens aus Ihrem Code heraus auf diese Daten zugreifen. Syntax
Die Variable dateipfad bezeichnet den absoluten Pfad zur Typbibliothek, TypBibliothekUUID ist ihre universelle eindeutige Kennung; einer dieser beiden Parameter muss angegeben werden. HöchsteVersionsNummer und NiedrigsteVersionsNummer sind optionale Parameter, die die auszuwählende Version spezifizieren. Ist die hierdurch bezeichnete Version nicht vorhanden, so wird jeweils die neueste Version benutzt. LocaleID verweist auf das Gebietsschema der zu verwendenden Bibliothek; ist die angeforderte Gebietsschemakennung nicht vorhanden, dann wird das Standardgebietsschema des Systems benutzt. Bei der Arbeit mit Typbibliotheken können verschiedene Fehler auftreten. Der Server gibt die folgenden Fehlermeldungen zurück:
536
Referenz für die Datei global.asa
•
ASP 0222. Ungültige Spezifikation der Typbibliothek. Das Tag <METADATA> enthält eine ungültige Typbibliothekenangabe.
•
ASP 0223. Typbibliothek kann nicht gefunden werden. Das Tag <METADATA> enthält eine Typbibliothekenangabe, die nicht mit dem Registrierungseintrag übereinstimmt.
•
ASP 0224. Typbibliothek kann nicht geladen werden. ASP kann die im Tag <METADATA> angegebene Typbibliothek nicht laden.
•
ASP 0225. Kein Wrappen für Typbibliothek möglich. ASP kann kein TypeLibraryWrapper-Objekt für die im Tag <METADATA> angegebene Typbibliothek erstellen. Beispiel
Hier sehen Sie die Deklaration der Typbibliothek für eine Komponente namens NeueKomponente, wobei statt der UUID der vollständige Pfadname angegeben wurde. Die Versionsnummer und die Gebietsschemakennung werden spezifiziert. Tipp Am besten setzen Sie Ihre Typendeklarationen in der Datei global.asa ganz nach oben. Dadurch wird die Bestimmung der im Code verwendeten Typbibliotheken erleichtert – Sie müssen nur den obersten Teil der Datei überprüfen. Tipp Eine Syntax in der Art wie objekt.methode oder objekt.eigenschaft können Sie auch bei Typbibliotheken verwenden. ADODB.strConnection beispielsweise ist leichter zu entschlüsseln als strConnection im Code.
Anhang E Beispiele für die programmgesteuerte Administration E.1 E.2 E.3
Sicherung der Metabasis Wiederherstellen der Metabasis Fazit
538 542 545
538
Sicherung der Metabasis
Die Erfüllung der einen oder anderen administrativen Aufgabe kann bei IIS schon recht viel Zeit benötigen, wenn man das Snap-In oder die HTML-Oberfläche verwendet. Es gibt auch ein paar vorgefertigte Skripts, die Ihnen bei der effizienteren oder sogar automatisierten Lösung solcher Aufgaben hilfreich sein können. Microsofts hat ein paar Beispielskripts erstellt, die Ihnen helfen sollen, einige häufiger auftretende Arbeiten durchzuführen. Sie können anhand dieser Skripts außerdem lernen, eigene Skripts zu schreiben. Diese Skripts können Sie beliebig in VBScript oder JScript verfassen. Die IIS 5.0 beiliegenden Skripts sind für die Verarbeitung durch den Windows Script Host (WSH) mit Hilfe der Programme Wscript.exe oder Cscript.exe gedacht. Cscript.exe ist zur Verwendung in der Befehlszeile gedacht und folgt der Syntax Csript.exe scriptname, wobei scriptname der Name des auszuführenden Skripts
ist. Wscript.exe können Sie mit der gleichen Syntax zur Ausführung in einem Fenster starten. Wenn Sie mehrere Skripts gleichzeitig ausführen wollen, können Sie diese in einer Stapelverarbeitungsdatei ablegen. Hinweis Damit die Skripts auf dem Computer ausgeführt werden können, muss der WSH lokal installiert sein, um die Befehle bearbeiten zu können.
E.1
Sicherung der Metabasis Bei diesem Utility handelt es sich mit Sicherheit um eines der wichtigsten Skripts, die Microsoft jemals veröffentlicht hat. Da die Metabasis praktisch alle wesentlichen Daten Ihrer IIS-Konfiguration enthält, muss in jedem Fall gewährleistet sein, dass sie regelmäßig gesichert wird. Dabei hilft Ihnen dieses Skript. In Listing E.1 ist das Skript abgebildet, das Sie im Verzeichnis \InetPub\iissamples\sdk\admin finden; es heißt metaback.vbs. Es gibt auch eine Version in JScript namens metaback.js. Eine Anmerkung für diejenigen, die mit VBScript oder Visual Basic nicht vertraut sind. Der Unterstrich (»_«) in den Zeilen 53, 92, 96, 102, 105 und 114 zeigt an, dass die Codezeile in der nächsten Zeile fortgesetzt wird, d.h. es handelt sich eigentlich nur um eine Zeile. Der Code wurde hier aus Platzgründen abgeschnitten. Beachten Sie ferner, dass die Zeilennummern nicht Bestandteil des Codes sind, sondern nur als Orientierungshilfe bei der Beschreibung des Skripts dienen.
Anhang E • Beispiele für die programmgesteuerte Administration
1 ''''''''''''''''''''''''''''''''''''''''''''' 2' 3 ' Metabasis Backup Utility 4' 5 ''''''''''''''''''''''''''''''''''''''''''''' 6 7 ' Description: 8 ' -----------9 ' This sample admin script allows you to create a backup of your 10 ' Metabasis. 11 ' 12 ' To Run: 13 ' ------14 ' This is the format for this script: 15 ' 16 ' cscript metaback.vbs 17 ' 18 ' NOTE: If you want to execute this script directly from Windows, 18 19 " ' use 'wscript' instead of 'cscript'. 20 ' 21 ''''''''''''''''''''''''''''''''''''''''''''' 22 23 ' Initialize error checking 24 On Error Resume Next 25 26 ' Initialize variables 27 Dim ArgCount, BuName, BuVersion, BuFlags, CompObj, VersionMsg 28 29 ' Default values 30 ArgCount = 0 31 BuName= "BeispielSicherung" 32 BuVersion = &HFFFFFFFF ' Use next available version number 33 BuFlags = 0 ' No special flags 34 35 36 ' ** Parse Command Line 37 38 ' Loop through arguments 39 While ArgCount < Wscript.Arguments.Count 40 41 ' Determine switches used 42 Select Case Wscript.Arguments(ArgCount) 43 44 Case "-v": ' Designate backup version number 45 ' Move to next arg, which should be parameter 46 ArgCount = ArgCount + 1 47 If ArgCount => Wscript.Arguments.Count Then 48 Call UsageMsg 49 Else
539
540
Sicherung der Metabasis
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
BuVersion = Wscript.Arguments(Argcount) End If Case "-F": ' Force overwrite, even if name and version_ exists BuFlags = 1 Case "-h", "-?", "/?": Call UsageMsg Case Else: If BuName <> "Beispielsicherung" Then ' Only one name allowed Call UsageMsg Else BuName = Wscript.Arguments(ArgCount) End If End Select ' Move pointer to next argument ArgCount = ArgCount + 1 Wend
' **Perform Backup: ' First, create instance of computer object Set CompObj = GetObject("IIS://Localhost") ' Call Backup method, with appropriate parameters CompObj.Backup BuName, BuVersion, BuFlags ' Make pretty version string If BuVersion = &HFFFFFFFF Then VersionMsg = "Nächste Version" Else VersionMsg = "Version " & BuVersion End If ' Check for error backing up Metabasis If Err <> 0 Then 'Errors! If Err.Number = &H80070050 Then ' Duplicate backup Wscript.Echo "'" & BuName & "' (Version " & BuVersion &_ ") ist bereits vorhanden. Der Schalter -F erzwingt das Überschreiben der Datei." Else ' Something else went wrong Wscript.Echo "Fehler beim Sichern der Metabasis nach '" & BuName & "' (" & VersionMsg & ")."
Anhang E • Beispiele für die programmgesteuerte Administration
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
541
Wscript.Echo "Fehlernummer: " & Hex(Err.Number) End If Else ' No errors! If BuFlags = 1 Then ' Forced creation Wscript.Echo "Erzwungen erstellt: Sicherung ' " & BuName & "' ("_ 103 & VersionMsg & ")." Else Wscript.Echo "Erstellt: Sicherung '" & BuName & "' (" & VersionMsg & ")." End If End If
' Displays usage message, then QUITS Sub UsageMsg Wscript.Echo "Verwendung: cscript metaback.vbs [] [-v_ ][-F (zum Erzwingen)]" Wscript.Quit End Sub
Listing E.1: metaback.vbs
Das Listing E.1 führt eine Sicherung der Metabasis durch. Wenn Sie den Skriptbefehl zur Ausführung aufrufen, durchsucht eine Parserroutine den eingegebenen Befehl zunächst nach gegebenenfalls vorhandenen Schaltern, die bestimmte Optionen aufrufen können. Dieser Codeabschnitt beginnt in Zeile 39 und endet in Zeile 71. Werden Optionsschalter gefunden, dann werden diese später angewandt. In Zeile 77 beginnt der Sicherungsprozess. Dabei wird zunächst ein Objekt angefordert, damit der Variablen CompObj ein von der Methode GetObject zurückgegebener Wert zugewiesen wird. Dieses Objekt wird für den Zugriff des lokalen Rechners (localhost) auf die Metabasis benutzt. Ersetzen Sie bei Bedarf localhost durch den Namen oder die IP-Adresse des Rechners, mit dem Sie arbeiten. Zeile 80 wendet die Optionsschalter aus dem Skriptaufruf an, die von der Parserroutine zurückgegeben wurden. Die Zeilen 90 bis 108 enthalten eine Fehlerprüfroutine. Dies ist nicht dasselbe wie eine Fehlerbehandlungsroutine bei Codefehlern; diese Routine prüft vielmehr den Sicherungsstatus, um festzustellen, ob während der Sicherung Fehler aufgetreten sind. Alle aufgetretenen Fehler werden mit Hilfe des Befehls Echo im Befehlsfenster angezeigt. In den Zeilen 113 bis 117 befindet sich noch eine kleine Unterroutine, die die Syntaxbefehle anzeigt, falls ein Benutzer den Befehl nicht korrekt eingibt und das Skript dann beendet. In der Regel werden Sie keine Änderungen an diesem Skript vornehmen müssen, damit es lokal auf dem Computer läuft, auf dem es gespeichert ist.
542
E.2
Wiederherstellen der Metabasis
Wiederherstellen der Metabasis Die Sicherung der Metabasis macht natürlich nur Sinn, wenn Sie sie auch wiederherstellen können. Das Skript metabackrest.vbs ist für diesen Zweck gedacht. Ich habe auch dieses Skript in Listing E.2 abgedruckt, um es besser erläutern zu können. Sie finden es im gleichen Verzeichnis wie das Sicherungsskript. 1 2 3 4 5 6 7 8 9
''''''''''''''''''''''''''''''''''''''''''''' ' ' Metabasis Backup Restore Utility ' ''''''''''''''''''''''''''''''''''''''''''''' ' Description: ' -----------' This sample admin script allows you to restore backups of your
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
' ' ' ' ' ' ' ' '
Metabasis To Run: ------This is the format for this script: cscript metabackrest.vbs
NOTE: If you want to execute this script directly from Windows, use ' 'wscript' instead of 'cscript'. ' ''''''''''''''''''''''''''''''''''''''''''''' ' Initialize error checking On Error Resume Next ' Initialize variables Dim ArgCount, BuName, BuVersion, BuFlags, CompObj, VersionMsg ' Default values ArgCount = 0 BuName= "Beispielsicherung" BuVersion = &HFFFFFFFE ' Use highest version number BuFlags = 0 ' RESERVED, must stay 0
' ** Parse Command Line ' Loop through arguments
Anhang E • Beispiele für die programmgesteuerte Administration
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
While ArgCount < Wscript.Arguments.Count ' Determine switches used Select Case Wscript.Arguments(ArgCount) Case "-v": ' Designate backup version number ' Move to next arg, which should be parameter ArgCount = ArgCount + 1 If ArgCount => Wscript.Arguments.Count Then Call UsageMsg Else BuVersion = Wscript.Arguments(Argcount) End If Case "-?", "-h", "/?": Call UsageMsg Case Else: If BuName <> "Beispielsicherung" Then ' Only one name allowed Call UsageMsg Else BuName = Wscript.Arguments(ArgCount) End If End Select ' Move pointer to next argument ArgCount = ArgCount + 1 Wend
' **Perform backup restore: ' First, create instance of computer object Set CompObj = GetObject("IIS://Localhost") ' Call Restore method ' NOTE: ** All IIS services will be stopped by this method, then restarted! Wscript.Echo "Alle Dienste werden gestoppt ..." CompObj.Restore BuName, BuVersion, BuFlags ' NOTE: for restoration, BuFlags MUST be 0 ' Make pretty version string If BuVersion = &HFFFFFFFE Then VersionMsg = "Höchste Version " Else
543
544
Wiederherstellen der Metabasis
87 VersionMsg = "Version " & BuVersion 88 End If 89 90 ' Check for error backing up Metabasis 91 If Err <> 0 Then 'Errors! 92 If Err.Number = 5 Then ' Location name not available 93 Wscript.Echo "Fehler beim Wiederherstellen der Metabasis: '" & BuName & "' 94 (" & VersionMsg & ")nicht vorhanden." 95 Else 96 Wscript.Echo "Fehler beim Wiederherstellen der Metabasis aus '" & BuName & 97 "' (" & VersionMsg & ")." 98 Wscript.Echo "Fehlernummer: " & Hex(Err.Number) 99 End If 100 Wscript.Echo "Dienste werden gestartet." 102 Else ' No errors! 103 Wscript.Echo "Wiederhergestellt: Sicherung '" & BuName & "' (" & 104 VersionMsg & ")." 105 Wscript.Echo "Dienste wurden gestartet." 106 End If 107 ' Display usage messsage, then QUIT 108 Sub UsageMsg 109 Wscript.Echo "Verwendung: cscript metabackrest.vbs [-v 110 ]" 111 Wscript.Quit 112 End Sub Listing E.2: metabackrest.vbs
An dieser Stelle werde ich nicht das ganze Skript abhandeln, sondern nur die Unterschiede zu Listing E.1 benennen. Wie ich bereits im Abschnitt über das Objekt IISComputer in Anhang B bemerkte, müssen die IIS-Dienste beendet werden, bevor ein Wiederherstellungsvorgang ausgeführt werden kann. Genau dies tut dieses Skript in den Zeilen 76 bis 80. Es ist kein spezieller Stoppbefehl vorhanden, sondern der Befehl Restore beendet den Dienst. Wenn Restore abgeschlossen ist, werden die IIS-Dienste neu gestartet. Sowohl das Sicherungs- als auch das Wiederherstellungsskript sind in VBScriptund JScript-Versionen im angegebenen Verzeichnis vorhanden. Sie können sich natürlich auch eigene Skripts in einer Sprache Ihrer Wahl erstellen, sofern Sie zuvor eine gültige und unterstützte Skript-Engine installieren.
Anhang E • Beispiele für die programmgesteuerte Administration
E.3
545
Fazit In diesem Anhang habe ich Ihnen zwei sehr wichtige Skripts zur Sicherung und Wiederherstellung der Metabasis gezeigt und erläutert, die mit IIS ausgeliefert werden. Diese Skripts können Sie als Richtschnur bei der Erstellung eigener oder an Ihre Bedürfnisse angepasster Skripts verwenden. Beachten Sie unbedingt auch die anderen Beispielskripts, die bei der Installation von IIS im genannten Verzeichnis abgelegt werden; sie bieten weitere nützliche Funktionen und Administrationsbeispiele, die sich über die Befehlszeile aufrufen lassen.
Stichwortverzeichnis ! #config (Anweisung) 49 #echo (Anweisung) 50 #exec (Anweisung) 52 #flastmod (Anweisung) 52 #fsize (Anweisung) 53 #include (Anweisung) 33, 46, 53 – verwenden 49 #include-Dateien 348, 369 – benennen 370 – einsetzen 370 -Deklarationen 534 @-Anweisungen 526 _NewEnum (Eigenschaft) 323 A Abandon (Methode) 532 Ablaufrichtlinien 120, 127 Access Control List siehe ACL 118, 182 ACL (Access Control List) 118, 182, 196, 410 Active Directory 114, 154, 220 Active Server Pages siehe ASP 25 ActiveHTTPSessions (Eigenschaft) 411 ActiveX Data Object siehe ADO 373 Ad Rotator (Komponente) 384 – Eigenschaften 386 – Übersicht 384 Administration – abwärtskompatible 83 – Aufgaben 323 – Beispiele 537 – HTML-Tool 323 – NNTP-Dienst 85, 127 – programmgesteuerte 315, 537 – Skripts 298
– SMTP-Dienst 85, 89 – vereinfachen 101 Administrationsskripts 298 Administrator 341 – Referenz 415 ADO (ActiveX Data Object) 373, 377, 398 Adobe Acrobat Reader 368 ADSI (Active Directory Services Interface) 25, 298, 317, 321 – Änderungen unter IIS 5.0 522 – Containerobjekte 322, 518, 519 – Eigenschaften 522 – Methoden 512 – Objekte 321 – Objekteigenschaften 512 – Referenz 511 ADSI-Containerobjekte 322 – Eigenschaften 518 – Methoden 519 ADSI-Objekte 321 – Eigenschaften 512, 522 ADSI-Pfad 319, 324 ADsPath (Eigenschaft) 512 adsutil (Befehl) 298, 299 Affinität 289 Aliasdomäne 110 ALL_HTTP (Variable) 50 Anforderung umleiten 36, 38 Anmeldungsfehlschläge (Leistungsindikator) 129 Anmeldungsversuche (Leistungsindikator) 129 Anschluss 51 Anschlussregeln 287, 290 Anwendung (Objektbereich) 367
548
Anwendungen – IIS-Anwendungen 161 – Kompatibilität 285 – prozessorintensive 288 – Schutz 25 – separate Ausführung 25 Anwendungsereignisse 529, 530 Anwendungsschutz 172 – einstellen 163 Anwendungsserver 263 Anwendungszuordnungen 167 – ändern 168 AppCreate (Methode) 489 AppCreate2 (Methode) 489 AppDelete (Methode) 323, 490 AppDeleteRecursive (Methode) 490 AppDisable (Methode) 491 AppDisableRecursive (Methode) 491 AppEnable (Methode) 492 AppEnableRecursive (Methode) 492 AppGetStatus (Methode) 493 Application (Bereich) 529 Application (Objekt) 380 Application_OnEnd (Ereignis) 531 Application_OnStart (Ereignis) 531 AppUnload (Methode) 493 AppUnloadRecursive (Methode) 494 Arbeitsspeicher siehe Speicher 263 Artikel (Newsgroups) siehe Beiträge 124 ASP (Active Server Pages) 25, 67 – #include-Dateien 348, 369 – -Deklarationen 534 – @-Anweisungen 526 – -Anwendungen siehe ASP-Anwendungen 174 – Anwendungsereignisse 530 – Auflistungen 361 – Benutzereingaben verarbeiten 362 – clientseitiges Skripting 357 – COM-Komponenten 365 – Dateien übermitteln 369 – Dateierweiterungen 35 – Dateisystem 399
Stichwortverzeichnis
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Datenquellen 372 E-Mails automatisch erstellen 238 Ereignisse 432 erstellen 348 Fehler verarbeiten 240 Fehlerbereinigung 379 Fehlermeldungen 381, 535 Fehlerverarbeitungsdatei 240 Inhalte puffern 347 Inhalte übermitteln 367 installierbare Komponenten 384 Komponenten 364, 384 Konstanten 355 neue Merkmale in IIS 5.0 25 Objekte 364, 380 Protokolldateien verarbeiten 399 Protokollierung 424, 432 Prozeduren 359 Quelltextanzeige beim Client 35 Sitzungen 370 Sitzungsereignisse 532 Skriptaufruf 52 Skriptdebugging 379 Skriptsprachen 348, 353, 527 Skriptverschlüsselung 347 Standardsprache einstellen 348 Transaktionen 378 TypeLibrary-Deklaration 535 Übersicht 346 Unterschiede zwischen den Versionen 347 – Variablen 355 – Websites verwalten mit 32, 46 – XML-Integration 347 ASP-Anwendungen – Fehlerbereinigung 177 – Fehlermeldungen 237 – konfigurieren 176 – Puffer 169 – Sitzungen 168 – Standardskriptsprache 169 – zwischenspeichern 174
Stichwortverzeichnis
ASP-Anwendungen siehe auch IIS-Anwendungen 168 AspAppRestart (Methode) 494 ASPError (Objekt) 381 AspErrorsToNTLog (Eigenschaft) 424 AspScriptLanguage (Eigenschaft) 527 ASP-Skriptdateien siehe ASPAnwendungen 174 Assistenten 182 – verwenden 209 AtEndOfLog (Methode) 400 ATM (Automatic Teller Machine) 528 Auflistungen 361 – Anzahl der Elemente bestimmen 361 Ausführberechtigungen 165 Ausgangspunkt 162, 163 Auskommentierung 354 Auslagerung 263 AUTH_PASSWORD (Variable) 50 AUTH_TYPE (Variable) 50 AUTH_USER (Variable) 50 Authentifizierung 114, 123, 185 – Digestauthentifizierung 135, 185 – Ereignisse 424 – implementieren 186, 194 – konfigurieren 186, 194 – NNTP-Dienst 118 – prüfen 409 – Standardauthentifizierung 102 – Standarddomäne 190 – Typen 50, 185 – Windows-Authentifizierung 135 Automationsaktivierung 317 Autostarttyp 61 AvailableThreads (Eigenschaft) 411 B Backup (Methode) 463 BadMail (Verzeichnis) 88 Bandbreite – beschränken 274 – Leistungsermittlung 440 Bannerrotation 384
549
Basisverzeichnis 36, 91 – erstellen 36, 119 – Optionen 37 Befehlszeile – Sonderzeichen verwenden 420 Beiträge – Beschränkungen 124 Benutzer – Leistungsermittlung 442 Berechtigungen 137, 319 – konfigurieren 186, 194 – Typen 187, 200 – Übersicht 197 – Unterschiede zwischen 200 – Webserverberechtigungen 200 Bereich 529 Beschreibung 65, 72 Blue Screen of Death 62 Border (Eigenschaft) 386 browscap.ini (Datei) 388 Browser – Cookies 371 – umleiten 368 Browser Capabilities (Komponente) 36, 387 BrowserType (Objekt) 387 BusyConnections (Eigenschaft) 411 BytesReceived (Eigenschaft) 402 BytesSent (Eigenschaft) 402 C C (Programmiersprache) 298, 353 C++ (Programmiersprache) 298, 316, 317 Cache 263 – deaktivieren 417 – Leistungsermittlung 442 – Leistungsindikatoren 264 – TTL 418 cdonts (Objekt) 238 Certificate Trust List siehe CTL 22 CGI (Common Gateway Interface) 68, 173 – Anwendungen konfigurieren 177 – Skriptaufruf 52
550
– Sonderzeichen 178 – Timeout 269 – Verarbeitung 422 chaccess (Befehl) 311 ChooseContent (Methode) 395 Clickable (Eigenschaft) 386 ClientIP (Eigenschaft) 402 Clients, Downlevel-Clients 420 Clientzertifikate 216 – aktivieren 218, 219 – erwerben 217 – exportieren 221 – installieren 217 – Komponenten 208 – Kontozuordnung 218, 221 – Optionen 219 CloseLogFiles (Methode) 400 Clustering 64, 99, 265, 281 – Anschlussregeln 287 – Definition 283 – Gründe für 284 – interne Kommunikationsprobleme 292 – Kompatibilität 285 – konfigurieren 287 – Konzept 282 – Parameter 287 – Prioritäten 287 Clustering siehe auch Netzwerklastenausgleich 281 Codepage 526 CODEPAGE (@-Anweisung) 526 COM-Komponenten 364 – benutzen 365 – instanzieren 365 – Typbibliotheken 529 Computer, Identität im Netzwerk verifizieren 156 Content Linking (Komponente) 391 Content Replication (Tool) 294 Content Replication System siehe CRS 118 Content Rotator (Komponente) 394 – Inhaltsplandatei 394 CONTENT_LENGTH (Variable) 50
Stichwortverzeichnis
CONTENT_TYPE (Variable) 50 contftp (Befehl) 310 Continue (Methode) 472, 501 contserv (Befehl) 310 contweb (Befehl) 309 Cookie (Eigenschaft) 402 Cookies 371 – benennen 420 CopyHere (Methode) 519 Count (Prozedur) 323 Counter 411, 531 Counters (Komponente) 395 Counters (Objekt) 395 CPU (Central Processing Unit) siehe Prozessor 249 Create (Methode) 519 Create (Prozedur) 322 CreateMapping (Methode) 456 CRS (Content Replication System) 118 CScript (Programm) – registrieren 298 CTL (Certificate Trust List) 22 CurrentThreads (Eigenschaft) 411 CustomFields (Eigenschaft) 403 D DATE_GMT (Variable) 51 DATE_LOCAL (Variable) 51 Dateien – Anzeige der Größe festlegen 50 – Großkleinschreibung 423 – Handle 263 – NTFS-Berechtigungen 195, 196 – Zugriff einschränken 197 – Zugriff gewähren 197 – Zugriffssteuerung 192 Dateigröße 53 – Anzeige festlegen 50 Dateiserver 263 Dateisystem – NTFS 182, 194 – Zugriff mit ASP 399 Dateizugriff (Komponente) 399
Stichwortverzeichnis
Daten – Auslagerung 263 – Datenquellen 372 – komprimieren 277 – Konsistenz 292 – replizieren 292 – zugreifen auf 372, 375 – Zugriffssteuerung 192 Datenbanken 375 – Datenbankzugriff (ASP-Komponente) 398 – Zugriff 372 – Zugriffssteuerung 203 Datenbankzugriff (Komponente) 398 Datendurchsatz siehe Durchsatz 440 Datenquellen 372 – Datensatzgruppe 377 – konfigurieren 373 – wählen 373 – zugreifen auf 375 Datenquellenname siehe DSN 99, 246 Datensatzgruppe 377 Datenverkehr 265 – überwachen 261 DateTime (Eigenschaft) 403 Datumsformat, festlegen 49 DB/2 372 Debugging siehe Fehlerbereinigung 170 Delegierung 59, 82 Delete (Methode) 520 Delete (Prozedur) 323 DeleteBackup (Methode) 464 DeleteMapping (Methode) 457 DENIC 156 DeNIC 58 DFS (Distributed File System) 294 – Freigabe konfigurieren 295 DFS-Freigabe – Freigabepunkt 295 – konfigurieren 295 DHCP (Dynamic Host Configuration Protocol) 148 – einrichten 151 – Funktionsweise 152
551
Dienstdomänen 110 Dienste – Dienst-Locator 419 Dienste (Applet) 89 Dienstkonto (Authentifzierungsmethode) 115 Dienst-Locator 419 Digestauthentifizierung 21, 185 DisableSocketPooling (Eigenschaft) 522 Diskussionsgruppen siehe Newsgroups 86 dispnode (Befehl) 301 disptree (Befehl) 301 DNS (Domain Name System) 153, 154 – Windows 2000-DNS 154 – Zonen 154 DOCUMENT_NAME (Variable) 51 DOCUMENT_URI (Variable) 51 Dokument – Datum der letzten Änderung 51, 52 Dokumentfußzeilen siehe Fußzeilen 44 Domänen – Aliasdomänen 110 – Dienstdomänen 110 – Domänennamen 148 – Internetdomänen 155 – lokale 110 – Maskeradendomäne 108 – registrieren 155 – Remotedomänen 110 – Routingdomäne 113 – SMTP-Domänen 110 – SMTP-Domänen erstellen 110 – Standardanmeldedomäne 190 – Standarddomäne 111 – vergebene Internetdomänen 156 – Zugriff gestatten 481 – Zugriff verweigern 480 Domänencontroller 81, 101 Domänennamen 148 – Registrierung 58 – vergebene 156 – verifizieren 109 – vollständig qualifizierte 108, 152 – Wartezeit nach Registrierung 157
552
Domain Name System siehe DNS 154 DomainDeny (Eigenschaft) 480 DomainGrant (Eigenschaft) 481 Downlevel-Clients 420, 421 Drive (Objekt) 399 Drives (Objekt) 399 Drop (Verzeichnis) 88 DSN (Data Source Name) 99, 204, 246 Durchsatz, Leistungsermittlung 440 E Eigenschaften – geänderte 524 – unter IIS 5.0 entfernte 522 – unter IIS 5.0 hinzugefügte 523 – vererben 319 Eingabeaufforderung siehe auch Befehlszeile 420 Einzelpunktversagen 285 elektronische Post siehe E-Mails 86 E-Mails 86 – Anzahl der Empfänger beschränken 106 – Anzahl pro Verbindung beschränken 105 – ausgehende 105 – automatisch gesandte 238 – Größe beschränken 105 – Header 108 – Optionen 105 – Remotezustellung 88 – Spamming 104 – Stapelverarbeitung beim Versand 88 – unzustellbare 107 – Verarbeitung 88 – verwalten 105 – Weitergabe 103, 113 ENABLESESSIONSTATE (@-Anweisung) 527, 532 Entladen, von IIS-Anwendungen 175 EnumBackups (Methode) 465 Ereignisanzeige 116, 129, 131, 228, 259 – ASP-Ereignisse 424 – Filter verwenden 130 – IIS-Ereignisse 424 – Protokollauswahl 116
Stichwortverzeichnis
Ereignisse – ASP 432 – FTP-Dienst 431 – Metabasis 426 – ODBC-Protokollierung 427 – SSI 428 – WWW-Dienst 429 ESMTP (Extended SMTP) 113 Extended SMTP siehe ESMTP 113 Extension (Eigenschaft) 485 F FAT (File Allocation Table) – konvertierern zu NTFS 194 – vs. NTFS 194 Fehlerbereinigung 175 Fehlercodes 234 Fehlermeldungen 381 – aktivieren 239 – allgemeine 234, 239 – ASP-Anwendung 237 – ASP-Fehler 240 – bearbeiten 239 – benutzerdefinierte 24, 49, 233, 239 – Codes 234 – detaillierte 239 – einsetzen 235, 240 – erstellen 235, 240 – konfigurieren 235, 240 – nach HTTP 1.1 234 – Standardwebsite 239 – Verzeichnis 237 Fehlertoleranz 262, 282, 288 Festplatten – Auslagerung 263 – Latenz 261 – Leistung optimieren 261 – RAID-5-Datenträger 262 – Stripeset 261 – Zugriffszeit 261 File (Objekt) 399 FileExists (Methode) 412 File (Objekt) 399 FileSystemObject (Objekt) 399
Stichwortverzeichnis
Filter 130 – ISAPI-Anwendungen 178 – Netzwerklastenausgleich 288 findweb (Befehl) 302 Firewall 290, 329 – umgehen 329 Folder (Objekt) 399 Format – Datum und Uhrzeit 49 Formulare, verarbeiten 362 FQDN (Fully Qualified Domain Name) siehe Domänennamen, vollständig qualifizierte 108 Frames 387 FreeLowMem (Eigenschaft) 411 FreeMem (Eigenschaft) 411 FrontPage Server Extensions 30 FTP Service (Schlüssel) 319 FTP-Dienst – anhalten 473 – beenden 473 – Eigenschaften 471 – Ereignisse 431 – fortsetzen 472 – IIsFtpInfo (Objekt) 470 – IIsFtpServer (Objekt) 471 – IIsFtpService (Objekt) 474 – IIsFtpVirtual (Objekt) 476 – Protokollierung 431 – Registrierungseinträge 422 – starten 473 – Status 473 – Verzeichnisse 476 ftproot (Verzeichnis) 69 FTP-Server – anhalten 309 – beenden 306 – neu starten 310 – Sicherheit 186 – starten 307 FTP-Sites – Administration 57 – Anzeigeformate 69 – Begrüßungsmeldungen 69
553
– Haupteigenschaften 78 – hinzufügen 64, 68 – Meldungen 69 – Struktur 69 – und Hacker 72 – Verzeichnisse 69 Funktionen siehe auch Prozeduren 359 Fußzeilen 44 – Leistungseinbußen 46 – und ASP-Seiten 46 G GATEWAY_INTERFACE (Variable) 51 Gebietsschema 527, 528, 535 Gesamtzahl von Bytes/Sek (Leistungsindikator) 129 Gesendete Nachrichten/Sek (Leistungsindikator) 105 Get (Methode) 396, 512 GetAdvertisement (Methode) 387 GetAllContent (Methode) 395 GetDataPaths (Methode) 513 GetEx (Methode) 514 GetListCount (Methode) 391 GetListIndex (Methode) 392 GetMapping (Methode) 457 GetNextDescription (Methode) 392 GetNextURL (Methode) 392 GetNthDescription (Methode) 393 GetNthURL (Methode) 393 GetObject (Methode) 324, 521 GetPreviousDescription (Methode) 393 GetPreviousURL (Methode) 393 GetPropertyAttribObj (Methode) 515 global.asa (Datei) 526, 529 – -Deklarationen 534 – Anwendungsereignisse 529, 530 – Elemente 529 – Prozeduren 530 – Sitzungsereignisse 530, 532 – TypeLibrary-Deklaration 535 GrantByDefault (Eigenschaft) 481 Groß-/Kleinschreibung 423 Gruppenrichtlinien 224 GUID (Globally Unique Identifier) 512
554
H Hacker 72, 185 Handles 263, 316 HasAccess (Methode) 409 HighHTTPSessions (Eigenschaft) 411 Hits (Methode) 408 Hop Count 108 Hostheadernamen 58, 65, 72, 420, 421 – Unterstützung 77 Hostname 148 – des Clients 51 – des Servers 51 hosts (Datei) 67, 153, 157 HTML, Inhaltsrotation 394 HTTP 234 – Administration über 335 HTTP_ACCEPT (Variable) 51 HTTP-Header 41, 50 HTTP-Keep-Alives 276 – aktivieren 277 HTTP-Komprimierung 27, 277 – konfigurieren 278 Hyperlink 404 I IADsContainer (Schnittstelle) 322 IDC (Internet Database Connector) 172 Identitäten 73 – verifizieren 156 IETF (Internet Engineering Task Force) 230 IIS (Internet Information Server) – administrieren 315 – Änderungen in Version 5.0 522 – Assistenten 209 – benutzerdefinierte Fehlermeldungen 24 – dienstspezifische Registrierungseinträge 418 – Einstellungen sichern und wiederherstellen 79 – Ereignisse 424 – globale Registrierungseinträge 416 – IP-Konfiguration des Servers 152
Stichwortverzeichnis
– – – – – – – – – –
Konstanten 509 Leistungsmerkmale 522 Metabasis 317 Namensauflösung 148 neu starten 74 Neustart des Dienstes 23 Objekte 456 Programmierbarkeit 24 Protokollierung 424 Registrierungseinträge 416, 418, 419, 422 – Registrierungseinträge für den FTPDienst 422 – Registrierungseinträge für den WWWDienst 419 – Remoteadministration 321, 323, 327 – Sicherheit 181 – sichern 79 – Sicherung 23 – Skripts 298 – wiederherstellen 79 – Wiederherstellung 23 IIS Admin Base Object 316 – Benutzertypen 317 – Vererbung 317 IIS Admin Objects 316, 320 – Automationsaktivierung 317 – Konstanten 509 – Objekte 456 – Übersicht 321 IIS Computer (Schlüssel) 318 IIS 5.0 – Funktionen zur Websiteverwaltung 30 – Websiteverwaltung 30 IIS (Internet Information Server) – Version 3.0 83 IIS Admin Objects – Referenz 456 ff. IIS-Anwendungen 161 – Anwendungsschutz 162, 172 – ASP-Anwendungen 237 – Ausführberechtigungen 165 – ausführen 162
Stichwortverzeichnis
– Ausgangspunkt 162, 163 – Bereich 162 – Debugging 170 – Definition 162 – erstellen 165 – Fehlerbereinigung 170, 175, 177 – ISAPI-Anwendungen 164, 178, 237 – ISAPI-Erweiterungen 174 – isolieren 172 – isolierte entladen 175 – konfigurieren 161, 165, 176, 177 – Optionen 168 – Prozessausführung 162 – Puffer 169 – Schutz 162 – Sicherheit 165 – Sitzungen 168 – Skriptsprache 164 – Timeout 169 – Warteschlange 259 – zuordnen 167 – zwischenspeichern 172 IIsCertMapper (Objekt) 456 IIsCompressionScheme (Objekt) 461 IIsCompressionSchemes (Objekt) 460, IIsComputer (Objekt) 322, 462, 544 IIsCustomLogModule (Objekt) 467 IIsFilter (Objekt) 468 IIsFilters (Objekt) 469 IIsFtpInfo (Objekt) 470 IIsFtpServer (Objekt) 72, 471 IIsFtpService (Objekt) 322, 474 IIsFtpVirtual (Objekt) 476 IIsIPSecurity (Objekt) 477 IIsLogModule (Objekt) 482 IIsLogModules (Objekt) 483 IIsMimeMap (Objekt) 484 IIsMimeType (Objekt) 484 IIS-Protokollierung (Komponente) 399 iisreset (Befehl) 76 IIS-Server – Remoteadministration 328 IISSync (Tool) 293 IISWebDirectory (Objekt) 322 IIsWebDirectory (Objekt) 486
555
IIsWebFile (Objekt) 322, 495 IIsWebInfo (Objekt) 496 IIsWebServer (Objekt) 497 IIsWebService (Objekt) 322, 502 IIsWebVirtualDir (Objekt) 322, 506 IMSAdminBase (Schnittstelle) 316 Increment (Methode) 397 Indexdienst 118, 139 – automatisch starten 139 Indikatoren siehe Leistungsindikatoren 259 Inhalte – Ablauf 41 – Gültigkeit 41 – klassifizieren 43 – von Websites 41 Inhaltsklassifikation 43 Inhaltsrotation 394 Internet – Remoteadministration 328 – Unterstützung von Standards 26 Internet Database Connector siehe IDC 172 Internet Information Server siehe IIS 20 Internet Protocol Security siehe IPSec 230 Internetanbieter 272 Internetdienste-Manager 60 Internetdomänen 155 Internet-Informationsdienste (Snap-In) 31 Internetprovider 108, 331 Internetstandards 26 InterNIC 58, 155 IP-Adressen 103, 148 – Adressierungsschemata 152 – Adressklassen 149, 332 – auflösen im Internet 153 – Auflösung mit UND-Verknüpfung 151 – Bereich einschränken 332 – Bereiche 148 – des Clients 51 – DHCP 148, 152 – dynamische Zuweisung 148 – Identität verifizieren 156 – im Internet 149 – Klassen 149 – Konfiguration des IIS-Servers 152 – leasen 152
556
– nicht verifizierbare 109 – primäre siehe VIP 287 – reservierte Werte 148 – statische Zuweisung 148 – Struktur 150 – Subnetting 151 – Subnetzmasken 150, 151 – virtuelle siehe VIP 284 – Zugriff einschränken 199 – Zugriff gestatten 479 – Zugriff verweigern 478 – Zuweisung 148 ipconfig (Befehl) 157 IPDeny (Eigenschaft) 478 IPGrant (Eigenschaft) 479 IPSec (Internet Protocol Security) 230 Ipv6 (Adressierungsschema) 152 ISAPI-Anwendungen 164, 417, 421 – Filter 178 – zwischenspeichern 174 ISAPI-Filter – entfernen 178 – hinzufügen 178 Isolierung 172 IUSR_-Konto 192 IWAM_computername (Konto) 81 J Jahreszahlen, Formatierung 72 Java 353 JavaScript 32 JScript 32, 165, 317, 348 K Keep-Alives siehe HTTP-Keep-Alives 276 Kerberos 22, 135, 185, 230 Klassifikation 43 – Fragebogen 43 Kommunikation, sichere 103, 123 Komponenten 364 – installierbare 384 Komprimierung – HTTP 27
Stichwortverzeichnis
– Konfiguration 461 – Schemata 460, 461 Konstanten 355, 398, 509 Konten, Website-Operatoren 82 Kontozuordnung – 1:1-Zuordnung 219 – konfigurieren 222 – n:1-Zuordnung 220 – Verzeichnisdienstzuordnung 220 Ktransferred (Eigenschaft) 411 L Ländereinstellungen siehe Gebietsschema 527 LANGUAGE (@-Anweisung) 527 LAST_MODIFIED (Variable) 51 Latenz 261 Laufwerke konvertieren zu NTFS 194 LCID (@-Anweisung) 528 LDAP (Lightweight Directory Access Protocol) 114 – Routing 114 LDAP-Serververbindungen 114 Leistung – Festplatten optimieren 261 – Netzwerk 270 – optimieren 258 – Prozessbeschränkung 268 – Prozessor 267 – Speicher 263 – überwachen 258 – Warteschlange 259 Leistungsindikatoren 116, 259, 264 – Beschreibung 443 – für das Netzwerk 271 – Referenz 440 – Verfügbarkeit 440 Lightweight Directory Access Protocol siehe LDAP 114 Links siehe auch Verknüpfungen 38 Lock (Methode) 531 Locking 134 logisches UND 150
Stichwortverzeichnis
M MapPath (Methode) 532 Maskeradendomäne 108 Maximale Verbindungen (Leistungsindikator) 129 MCIS (Microsoft Commercial Internet System) 114 metaback.vbs (Skript) 538 metabackrest.vbs (Skript) 542 Metabasis 316, 317, 512 – Ablageort 320 – bearbeiten 298, 423 – Eigenschaften 318, 319, 462 – Ereignisse 426 – manipulieren 324 – metabase.bin (Datenbankdatei) 320 – Namespace 423 – Registrierungseinstellungen 320 – replizieren 293 – Schlüssel 319 – Sicherheit 320 – sichern 463, 538 – Sicherung löschen 464 – Sicherungen auflisten 465 – Speicherort 423 – Struktur 318 – Werte speichern in 518 – wiederherstellen 466, 542 – Zuverlässigkeit 320 Method (Eigenschaft) 403 Microsoft 110 Microsoft Access 372 Microsoft Cluster Server siehe MSCS 283 Microsoft Commercial Internet System siehe MCIS 114 Microsoft Exchange Server 272 Microsoft FrontPage 30, 31, 273, 337, 398 Microsoft IIS (Protokollformat) 95, 244 Microsoft Internet Explorer 328, 410 Microsoft Management Console siehe MMC 23 Microsoft Office 32, 364 Microsoft Site Server 294 Microsoft Skript-Debugger 170, 177, 379
557
Microsoft Visual Studio Enterprise Edition 134 Microsoft Word 365 MIME (Multipurpose Internet Mail Extensions) 118, 368, 484 MimeMap (Eigenschaft) 484 MimeType (Eigenschaft) 485 mkw3site (Befehl) 302 mkwebdir (Befehl) 303 MMC (Microsoft Management Console) 23, 31, 419 – Snap-In 23 Moderator 126 MoveHere (Methode) 521 MSCS (Microsoft Cluster Server) 283 Multipurpose Internet Mail Extensions siehe MIME 368 MyInfo (Komponente) 407 N Nachrichten siehe auch E-Mails 88 Namensauflösung 147 – hosts (Datei) 153 – mit DNS 154 – und IIS 5.0 148 – verifizieren 156 Namespace, Metabasis 423 National Computer Security Association siehe NCSA 245 Navigation 391 Navigationsleisten mit ASP erstellen 33 NCSA (National Computer Security Association) 245 NCSA allgemein (Protokollformat) 95, 245, 255 NDR (Non-Delivery Report) siehe Unzustellbarkeitsbericht 106 NetBIOS-Namen 152 Netscape Navigator 328 Network Load Balancing Service siehe NLBS 282 Netzmaske siehe Subnetzmaske 150 Netzwerk – Auslastung 272
558
– Bandbreite beschränken 274 – Kapazität optimieren 270 – Netzwerkkarte 272 – optimieren 270 – überwachen 261 Netzwerkanwendung, Clustering 282 Netzwerkkarte 272 Netzwerklastenausgleich siehe auch Clustering 282 – Affinität 289 – Anschlussregeln 287, 290 – Filtermodi siehe Filter beim Netzwerklastenausgleich 287 – installieren 286 – konfigurieren 287 – Lastverteilung 288 – Problembehebung 291 Netzwerklastenausgleichsdienst siehe NLBS 282 Netzwerkmonitor 261 Neustartschaltfläche 63 Newsfeeds 125 Newsgroups 86, 117 – konfigurieren 119 – moderierte 126 – Newsfeeds 125 – Newsserver 124 – replizieren 126 Newsserver 124 NextLink (Objekt) 391 NLBS (Network Load Balancing Service) 282 – initialisieren 286 NNTP-Befehle (Leistungsobjekt im Systemmonitor) 128 NNTP-Dienst 26, 117 – Ablaufrichtlinien 120, 127 – Administration 85, 127 – Authentifizierung 123 – Basisverzeichnis erstellen 119 – Fehlermeldungen 129 – konfigurieren 119 – Operator 126 – Problembehebung 131
Stichwortverzeichnis
– Sitzungen 121 – Skripts 127 – überwachen 127 – virtuelle Server 128, 130 – virtuelle Verzeichnisse 121 – Wartungsskripts 127 NNTP-Server (Leistungsobjekt im Systemmonitor) 128 Non-Delivery Report siehe Unzustellbarkeitsbericht 106 nslookup (Befehl) 159 NT File System siehe NTFS 118 NTFS (NT File System) 182 – Berechtigungen 118, 186 – Berechtigungen konfigurieren 194 – Daten sichern mit 194 – konvertieren zu 194 – Sicherheit 194 – Überwachung 225 NTFS-Berechtigungen 194 NTLM (Windows NT LAN Manager) 410 O ObjectContext (Objekt) 381 Objektbereiche – Threading 366 Objekte 364, 456 – Objektbereich 366 – Objektbereich Anwendung 367 – Objektbereich Seite 366 – Objektbereich Sitzung 366 – Zwischenspeicherung 418 objektorientierte Programmierung 364 ODBC (Protokollformat) 95, 246, 373, 427 – Optionen 99 Onlineshop 371, 378 OpenKey (Methode) 316 OpenLogFile (Methode) 400 Operator 82, 101, 126 – hinzufügen 329 Option Explicit (Anweisung) 356 Oracle 372 Owner (Methode) 412
Stichwortverzeichnis
P Page Counter (Komponente) 407 PageHit (Methode) 408 PATH_INFO (Variable) 51 PATH_TRANSLATED (Variable) 51 Pause (Methode) 473, 501 pauseftp (Befehl) 64, 309 Pausenschaltfläche 61 pausesrv (Befehl) 64, 308 pauseweb (Befehl) 64, 307 PERL (Practical Extraction and Reporting Language) 164 Permission Checker (Komponente) 409 Personal Web Server siehe PWS 407 Pickup (Verzeichnis) 88 PICS (Platform for Internet Content Selection Ratings) 27 PID (Prozesskennung) 260 ping (Befehl) 131, 149, 157 PKI (Public Key Infrastructure) 103 Platform for Internet Content Selection Ratings siehe PICS 27 PluginExists (Methode) 412 Poolthreads 417, 422 PopularPages (Eigenschaft) 411 Port siehe Anschluss 51 Practical Extraction and Reporting Language siehe PERL 164 ProcessForm (Methode) 412 Produktionsserver – Replikation auf 295 Programm – Umleitung zu 40 Programme siehe auch Anwendungen 40 Programmierung – objektorientierte 364 ProtocolStatus (Eigenschaft) 403 ProtocolVersion (Eigenschaft) 404 Protokoll – HTTP- 51 Protokolldateien – Formate 244, 406 – konvertieren 255
559
– mit ASP verarbeiten 399 – speichern 253 Protokollformate 244 Protokollierung 95, 117, 122 – aktivieren 96, 247 – Aktualisierung 254 – ASP 432 – Dateibenennung 246 – Dateien konvertieren 255 – Dateigröße 247 – deaktivieren 247 – Eigenschaften (Referenz) 450 – Formate 95, 244 – FTP-Dienst 431 – Häufigkeit 253 – Objekte 247 – ODBC 427 – Protokolldatei 96 – Protokolldateien speichern 253 – Referenz 450 – SSI 428 – von Website-Aktivitäten 244 Prozeduren 359 – aufrufen 360 – Definition 359 – global.asa (Datei) 530 – vs. Funktionen 359 Prozessabrechnung siehe Prozessüberwachung 249 Prozessausführung 162 Prozessbeschränkung 268 – konfigurieren 269 Prozesse – Abrechnung siehe Prozessüberwachung 249 – Anwendungsschutz 162 – Optionen 174 – verteilen 163 Prozesskennung siehe PID 260 Prozessnachverfolgung siehe Prozessüberwachung 249 Prozessor – Auslastung überwachen 249
560
– optimieren 267 – überwachen 249, 267 Prozessorzeit 259 Prozessüberwachung 249 Public Key Infrastructure siehe PKI 103 Put (Methode) 516 PutEx (Methode) 517 PWS (Personal Web Server) 407, 410 ff. Q Quelltext, fehlende Anzeige von ASP-Code 35 QUERY_STRING (Variable) 51 QUERY_STRING_UNESCAPED (Variable) 51 Queue (Verzeichnis) 88 R RAID-5-Datenträger 262 RAM (Random Access Memory) siehe Speicher 263 Random (Methode) 413 ReadFilter (Methode) 401 ReadLogRecord (Methode) 401 RecentVisitors (Eigenschaft) 411 Redirect (Methode) 368, 533 Referenz für Administratoren 415 Referer (Eigenschaft) 404 RefusedConnections (Eigenschaft) 411 regedit (Programm) 416 regedt32 (Programm) 416 Registrierdatenbank siehe Registrierung 416 Registrierung – dienstspezifische Einträge für IIS 418 – Editoren 416 – Einträge für den FTP-Dienst 422 – Einträge für den WWW-Dienst 419 – globale Einträge für IIS 416 – Referenz 416 – von Internetdomänen 155 Registry siehe Registrierung 416 REMOTE_ADDR (Variable) 51
Stichwortverzeichnis
REMOTE_HOST (Variable) 51 REMOTE_USER (Variable) 51 Remoteadministration 24, 321, 323, 327 – aktivieren 328 – Firewall umgehen 329 – im Intranet 333, 337 – konfigurieren 328 – mit Webbrowser 328 – Operatoren 329, 337 – Sicherheit 331 – über das Internet 328 – Verwaltungswebsite 328 – Zugriffssteuerung 329 Remotedomänen, Konfiguration 112 Remoteserver 88, 338 – Verzeichnissicherheit ändern 340 Remotezustellung 88 Remove (Methode) 397 Replikation 281, 292 – Definition 292 – Gründe für 294 – Metabasis 293 – Programme 293 – Tipps 295 Request (Objekt) 380 REQUEST_METHOD (Variable) 51 RequestsSinceStart (Eigenschaft) 411 RequestsToday (Eigenschaft) 411 Reset (Methode) 408 Resource Kit 294 Response (Objekt) 365, 380 Restore (Methode) 466 REXX (Sprache) 348 Robocopy (Tool) 294 route (Befehl) 159 – Optionen 159 Router, im Internet 158 Routingdomäne 113 Routingtabelle 158 – bearbeiten 159 RSAC (Recreational Software Advisory Council) 43
Stichwortverzeichnis
S Schlüssel 318 – Namen 319 – öffentlicher vs. privater 206 – Pfade 319 Schlüssel-Manager 123 SCRIPT_NAME (Variable) 51 Scripthost – Standard-Scripthost 298 SDK (Software Development Kit) 143, 317 Secure Sockets Layer siehe SSL 21, 186 Seite (Objektbereich) 366 Server – anhalten 308 – beenden 305 – Cache deaktivieren 417 – für CGI konfigurieren 177 – konfigurieren 263 – Leistung 258 – Leistung überwachen 258 – Leistungsoptimierung 162 – neu starten 310 – Prozessor 267 – Remoteadministration 327 – Remoteserver 88, 338 – Sicherheit 182 – Speicher 263 – starten 307 – virtueller 86, 283 – Webserver 244 Server (Objekt) 381 Server Gated Cryptography siehe SGC 21 SERVER_NAME (Variable) 51 SERVER_PORT (Variable) 51 SERVER_PORT_SECURE (Variable) 51 SERVER_PROTOCOL (Variable) 51 SERVER_SOFTWARE (Variable) 52 Servercache, deaktivieren 417 ServerIP (Eigenschaft) 404 Serverleistung – optimieren 258 – überwachen 258
561
ServerName (Eigenschaft) 404 ServerPort (Eigenschaft) 404 serverseitige Include-Anweisungen siehe SSI 428 ServerVersion (Eigenschaft) 411 Serverzertifikate 208 – erwerben 209, 210 – installieren 212 ServiceName (Eigenschaft) 405 Session (Bereich) 529 Session (Objekt) 371, 381 Session_OnEnd (Ereignis) 533 Session_OnStart (Ereignis) 532 Session_OnStart (Prozedur) 397 Set (Methode) 397 SetAcct (Methode) 458 SetEnabled (Methode) 459 SetInfo (Methode) 518 SetName (Methode) 459 SetPwd (Methode) 460 SGC (Server-Gated Cryptography) 21, 208, 210 Sicherheit 21, 181, 418 – ACLs 183 – Assistenten 22 – ausgehende 104, 108, 113 – Authentifizierung 184, 185 – Berechtigungen 137 – Bindungen 184 – Checkliste 183 – Dateisystem 183 – Datenbanken 203 – Digestauthentifizierung 21 – Domänencontroller 184 – durch ACLs 118 – FTP-Server 186 – IIS-Anwendungen 165 – IPSec 230 – IUSR_-Konto 192 – Kennwörter 183 – konfigurieren 226 – NNTP-Dienst 118
562
– NTFS 194 – NTFS-Berechtigungen 186 – Operatoren 101 – physikalische 184 – PKI 103 – Remoteadministration 184, 331 – sichere Kommunikation 123 – Sicherung 184 – Skripts 183 – SMTP-Dienst 100 – SSL 186, 204 – Überwachung 184, 224 – Verschlüsselung 21, 184, 204 – Vertrauensstellungen 230 – Verzeichnisberechtigungen 183 – Viren 184 – virtuelle Server 100 – WebDAV 136 – Zertifikate 103, 184, 208 – Zertifikatsspeicherung 22 – Zertifikatsvertrauenslisten 215 – Zugriffssteuerung 137, 192, 197 Sicherung – auflisten 465 – löschen 464 – von IIS-Einstellungen 79 Simple Network Management Protocol siehe SNMP 86 Sites – hinzufügen 64 – unterbrechen 60 – virtuelle 64 Sitzung (Objektbereich) 366 Sitzungen 121 – Leistungsermittlung 443 – Status 527 – Timeout 371, 532 – verwalten 370 Sitzungsereignisse 530, 532 Sitzungsstatus 527 Skalierbarkeit 282 Skripting – Administrationsskripts 298
Stichwortverzeichnis
– auf dem Client 357 – Beispiele 537 – clientseitiges 357 – Debugging 379 – Fehlerbereinigung 379 – Referenz 525 – Skriptnamen 51 – Skriptsprachen 348 – Verschlüsselung 347 Skripts 32 Skripts siehe auch IIS-Anwendungen 161 Skriptsprachen 165, 348, 353 – Auskommentierung 354 – Eigenschaften 353 – installierte 419 – Konstanten 355 – Standard ändern 528 – Variablen 355 – verwendete 527 Smart Host 109, 114 SMTP-Dienst 26 – Administration 85 – anpassen 89 – Authentifizierung 102 – beenden 89 – Clustering 99 – deaktivieren 90 – Domänen 110 – Eigenschaften 86 – Fehlermeldungen 116 – Konfiguration 115 – Operatoren 101 – Problembehebung 115 – Protokollierung 95 – Sicherheit 87, 100 – SMTP-Domänen 110 – Starteigenschaften 89 – starten 89 – überwachen 115 – Verarbeitung von E-Mails 88 – verwalten 89 – Verzeichnisse 87 – virtuelle Server 86, 90, 92
Stichwortverzeichnis
– Weitergabe 103 – Zugriffssteuerung 102 SMTP-Domänen – erstellen 110 Snap-Ins – hinzufügen 224 SNMP (Simple Network Management Protocol), Eigenschaften 86 Sockets 522 Software Development Kit siehe SDK 317 Software-RAID 262 Sonderzeichen 420 SortTemp (Verzeichnis) 88 Spamming 104 Speicher – Leistungsermittlung 442 – optimieren 263 – Speicherleck 261 Speicherleck 261 Speichermedium 118 SQL Server 204, 283, 372 SSI (Server-Side Includes) 46, 172 – aktivieren 47 – deaktivieren 48 – Protokollierung 428 – Referenz 49 SSL (Secure Sockets Layer) 21, 59, 136, 186, 204 – Identitäten 73 – konfigurieren 208 – Zertifikat 74 Standardauthentifizierung 102, 409 Standards – Unterstützung von 26 Standardskriptsprache 528 Standardversionsverwaltung 134 Start (Methode) 473, 501 StartDate (Eigenschaft) 411 startftp (Befehl) 63, 307 Startschaltfläche 60 startsrv (Befehl) 63, 307 StartTime (Eigenschaft) 411 startweb (Befehl) 63, 306
563
Status (Komponente) 410 Status (Methode) 473, 502 Stop (Methode) 473, 502 stopftp (Befehl) 63, 306 Stoppschaltfläche 60 stopsrv (Befehl) 63, 305 stopweb (Befehl) 63, 304 Stripesetdatenträger 261 Subnetting 151 Subnetzmaske 103, 150 – verwenden 151 Systembefehl – Aufruf über ASP 52 – Gründe für Deaktivierung 52 Systemmonitor 105, 116, 122, 128, 258, 264, 271, 276 T TargetFrame (Eigenschaft) 387 Task-Manager 259 Taskplaner 294 TCP/IP 148, 271 TCP-Anschluss 94 Telnet 132 Terminaldienste 24 TextStream (Objekt) 399 Threading 367 Time To Live siehe TLL-Zeit 158 TimedoutConnections (Eigenschaft) 411 Timeouts 417, 532 – Referenz 449 TimeTaken (Eigenschaft) 405 TLS (Transport Layer Security) 21 – Sicherheit 87 Tools (Komponente) 412 Toplevel-Domänen 155 TotalRequests (Eigenschaft) 411 tracert (Befehl) 158 TRANSACTION (@-Anweisung) 528 Transaktionen 378, 381, 528 – Leistungsermittlung 443 Transport Layer Security siehe TLS 21 TTL (Time To Live) 158, 418
564
Typbibliotheken 529 – deklarieren 535 – Fehlermeldungen 535 – Syntax 536 TypeLibrary-Deklaration 535 U Übermittlung – Dateien 369 – Inhalte 367 Überwachung 224 – Gruppenrichtlinien 224 – konfigurieren 224 – NTFS 225 – Prozessorauslastung 249 – Serverleistung 227 – Systemleistung 116 – verwalten 224 Umleitung 36, 38 – Beispiele 453 – Gründe 38 – Optionen 39 – Referenz 453 – Variablen 453 – zu einem Programm 40 – zu einem Verzeichnis 39 UND (Verknüpfung) 150 Unlock (Methode) 531 Unzustellbarkeitsbericht 106, 126 URIQuery (Eigenschaft) 405 URIStem (Eigenschaft) 405 URL (Variable) 52 URL, Umleitung 453 UserAgent (Eigenschaft) 406 UserName (Eigenschaft) 406 V Variablen 355 – Application (Bereich) 357 – Bereich 356 – deklarieren 356 – privatisieren 356 – publizieren 356
Stichwortverzeichnis
– Session (Bereich) 357 – Wirkungsbereich 356 VBScript 32, 165, 298, 317, 348 – fehlende Browserunterstützung 32 Verbindungen 92 – Anzahl beschränken 122 – Anzahl gleichzeitiger Verbindungen beschränken 272, 276 – aufrechterhalten 276 – ausgehende 92 – automatisch trennen 276 – Bandbreite beschränken 274 – eingehende 92 – Fehlermeldungen 234 – in Warteschlange 417 – konfigurieren 92 – LDAP-Serververbindungen 114 – Leistung berechnen 273 – Leistungsermittlung 442 – lokale 107 – Timeouts 276 – Typ auswählen 272 – Zeitlimit 122 – zu Remoteserver 338 Vererbung 317, 319 Verfügbarkeit 282 Verknüpfungen – umleiten 38 Verschlüsselung 21, 204 – aktivieren 206 – implementieren 206 – mit öffentlichem Schlüssel 205 – Prinzip 205 – Schlüsseltypen 206 – Verschlüsselungsstärke 205, 208 Versionskontrolle siehe Versionsverwaltung 134 Versionsverwaltung 26, 134 – erweiterte 134 – Standard- 134 Verwaltung – SMTP-Dienst 89 – von Websites 29
Stichwortverzeichnis
Verwaltungsobjekte siehe IIS Admin Objects 316 Verwaltungswebsite 328 Verzeichnisse 36 – Basisverzeichnis 91, 119 – Basisverzeichnisse 36 – erstellen 303 – NTFS-Berechtigungen 196 – Sicherheitseinstellungen ändern 340 – Umleitung zu 39 – virtuelle 303 – virtuelle Verzeichnisse 36, 38 Verzeichnissicherheit, ändern 340 VIP (virtuelle IP-Adresse) 284, 292 Virtual Network Interface Card siehe VNIC 282 virtuelle Server 86, 128 – erstellen 90 – konfigurieren 92 – NNTP-Server 117 – NNTP-Server wiederherstellen 130 – Sicherheit 100 – und Clustering 99 virtuelle Sites 64 virtuelle Verzeichnisse 36, 38 – erstellen 38 VisitorsSinceStart (Eigenschaft) 410 VisitorsToday (Eigenschaft) 411 Visual Basic 317, 353 Visual Source Safe 134 Visual Studio Enterprise Edition 134 VNIC (Virtual Network Interface Card) 282 Voreinstellungen, ändern 77 VPN (Virtual Private Network) 184, 230 W W3C-erweitert (Protokollformat) 95, 245, 450 – erweiterte Einstellungen 250 – Optionen 97 Wahrheitstabelle 150 Warteschlange 417
565
Web Distributed Authoring and Versioning siehe WebDAV 26 Web Service (Schlüssel) 319 Webbrowser, Remoteadministration 328 WebDAV (Web Distributed Authoring and Versioning) 26, 134, 192 – Beschreibung 134 – Clients 134 – Locking 134 – publizieren mit dem Internet Explorer 5.0 144 – publizieren mit Office 2000 145 – publizieren mit Windows 2000 143 – Sicherheit 135, 136 – Versionsverwaltung 134 – verwalten 136 – Verzeichnis 135 WebDAV-Verzeichnis 135 – Berechtigungen 137 – durchsuchen 139 – Eigenschaften 138 – erstellen 135 – indizieren 139 – verwalten 143 Webdesign, Programme 31 Webmaster, bei Fehler informieren 239 Webserver – anhalten 307, 501 – beenden 304, 502 – Berechtigungen 200 – fortsetzen 501 – IIsWebDirectory (Objekt) 486 – Leistungsoptimierung 258 – neu starten 309 – Prozessor 267 – Speicher 263 – starten 306, 501 Webserverberechtigungen 200 – konfigurieren 201 Website-Operatoren 82 Websites – Ablauf 41 – abwärtskompatible Administrierung 83 – Administration 57
566
– Aktivitäten protokollieren 243 – Anzahl gleichzeitiger Verbindungen beschränken 276 – Assistent für neue 65 – beenden 60 – benennen 72 – Beschreibung 65, 72 – Daten sammeln 244 – erstellen 31, 302, 336 – Fehlermeldungen 234 – Fußzeilen 44 – Gültigkeit 41 – Haupteigenschaften 78 – hinzufügen 64 – Hostheadernamen 420 – Identitäten 73 – Inhalte 41 – klassifizieren 43 – Operatoren 82 – Protokollierung 243 – Sicherheit 418 – Sockets 522 – Standardsite 74 – starten 60 – suchen 302 – überwachen 243 – verwalten 29 – verwalten mit ASP 32, 46 – Voreinstellungen ändern 77 – Zugriffsberechtigungen 67 Weitergabe 103 Werbebanner 384 – als Hyperlink 386 – Rahmen 386 Wiederherstellung von IIS-Einstellungen 79 Win32Status (Eigenschaft) 406 Windows 2000 Resource Kit 294 Windows Internet Name System siehe WINS 152 Windows NT LAN Manager siehe NTLM 410 Windows-Sicherheitspaket (Authentifizierungsmethode) 102, 118
Stichwortverzeichnis
Windows-SSPI (Authentifzierungsmethode) 115 WINS (Windows Internet Name System) 152, 154 Write (Methode) 365 WriteLogRecord (Methode) 402 WSH (Windows Scripting Host) 81 WWW-Dienst – Authentifizierung 424 – Ereignisse 424, 429 – IIsWebDirectory (Objekt) 486 – IIsWebInfo (Objekt) 496 – IIsWebServer (Objekt) 497 – IIsWebService (Objekt) 502 – IIsWebVirtualDir (Objekt) 506 – Metabasis 426 – ODBC 427 – Protokollierung 424, 425 – Registrierungseinträge 419 – SSI 428 WWW-Publishingdienst – beenden 60 X XML (Extended Markup Language) 347 Z Counters (Objekt) 395 Zähler siehe Counter 395 Zeitlimit 122 Zertifikate 103, 123, 208 – Clientzertifikate 208, 216 – exportieren 221 – installieren 213 – Kontozuordnung 218, 219 – Schlüssel-Manager 123 – Serverzertifikate 206, 208, 209, 210 – SSL konfigurieren 208 – Zertifikatsanforderung 209 – Zertifikatsvertrauenslisten 209, 215 – Zertifizierungsstellen 103, 208 – zuordnen 456 – Zuordnung aktivieren/deaktivieren 459 – Zuordnung löschen 457
Stichwortverzeichnis
Zertifikatsanforderung, erstellen 210 Zertifikatsspeicherung 22 Zertifikatsvertrauensliste siehe CTL 22 Zertifizierungsstellen 103 – Zertifikatsvertrauenslisten 215 Zugriff – einschränken 197, 276 – gewähren 197 – steuern 192 – unberechtigten erkennen 228 Zugriffsbeschränkungen – ändern 311
567
Zugriffssteuerung 102, 137, 192 – Ablauf (Schema) 193 – Datenbanken 203 – konfigurieren 197 – Remoteadministration 329 Zugriffssteuerungsliste siehe ACL 182 Zugriffs-Token 418 Zwischenspeicher siehe Cache 263 Zwischenspeicherung 172 – Leistungsermittlung 442