Beruflich Dokumente
Kultur Dokumente
5.0
internet
information
server
5.0 gerry o’brien
übersetzt von
christian alkemper
Markt+Technik Verlag
Die Deutsche Bibliothek – CIP-Einheitsaufnahme
Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der
Speicherung in elektronischen Medien.
Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten
ist nicht zulässig.
Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden,
sind gleichzeitig auch eingetragene Warenzeichen oder sollten als solche betrachtet
werden.
Umwelthinweis:
Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt.
Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus
umweltverträglichem und recyclingfähigem PE-Material.
10 9 8 7 6 5 4 3 2 1
04 03 02 01
ISBN 3-8272-6019-1
Teil I: Verwaltung 17
Stichwortverzeichnis 547
Einleitung
Verwaltung
Kapitel 1 Merkmale von Internet Information Server 5.0
Kapitel 2 Verwaltung von Websites
Kapitel 1
Merkmale von Internet
Information Server 5.0
Im Internet Information Server 5.0 wurden nicht nur viele bereits in früheren Ver-
sionen vorhandene Funktionen verbessert und optimiert, sondern es wurden auch
eine Reihe neuer Features implementiert.
Dieses Kapitel stellt Ihnen die allgemeinen Merkmale von IIS 5.0 vor. Wir wer-
den dann später in den jeweiligen Kapiteln genauer darauf eingehen.
1.2 Sicherheit
Wenn Computer mit dem Internet verbunden werden, haben Sicherheitsbedenken
meist eine sehr hohe Priorität, ja vielleicht sogar die höchste. In letzter Zeit kon-
zentrieren sich die Bemühungen der Hacker auf Microsofts Betriebssysteme und
Softwareprodukte, die der Herstellung von Internetverbindungen dienen. Zu den
bereits vorhandenen Sicherheitsfunktionen wurden beim IIS 5.0 noch einige neue
hinzugefügt, die Ihnen dabei helfen sollen, die Angriffe von Hackern abzuwehren
und die Datensicherheit zu gewährleisten.
1.2.3 Digestauthentifizierung
Ein weiteres neues Merkmal von IIS ist die Digestauthentifizierung. Durch Imp-
lementierung dieser Funktion können Administratoren ihre Benutzer sicher über
Firewalls und Proxyserver hinweg authentifizieren.
Um jene zu beruhigen, die mit anonymer Authentifizierung, HTTP-Basisauthenti-
fizierung und der NT-Abfrage/Antwort-Authentifizierung vertraut sind: Die gibt's
auch bei IIS 5.0.
22 Sicherheit
1.2.6 Zertifikatsspeicherung
Die Speicherung Ihrer IIS-Zertifikate ist nun in die CryptoAPI-Speicherung von
Windows integriert. Sie können die Zertifikatverwaltung von Windows zur Siche-
rung, Speicherung und Konfiguration Ihrer Zertifikate verwenden.
1.2.7 Sicherheitsassistenten
Wenn Ihnen die Sicherheitsadministration Ihres IIS-Servers abschreckend und
schwierig erscheint, dann fassen Sie Mut, denn Microsoft hat den Zaghaften unter
uns nun Sicherheitsassistenten an die Seite gestellt, die Ihnen den Job etwas einfa-
cher gestalten.
• Eine Neuheit von IIS 5.0 ist die Möglichkeit, Zugriffsberechtigungen für vir-
tuelle Verzeichnisse und sogar Dateien zu erstellen. Mit dem Assistenten für
die Erstellung von Berechtigungen wird diese Aufgabe drastisch vereinfacht
und der Assistent kann sogar Ihre NTFS-Berechtigungen aktualisieren, um die-
se Änderungen umzusetzen.
• Mit dem Assistenten für Webserverzertifikate können Sie Zertifikatsanforde-
rungen leichter erstellen und Zertifikate effektiver verwalten.
• Wenn Sie mit Zertifizierungsstellen Arbeiten, können Sie Ihre CTLs (Certifi-
cate Trust Lists, Zertifikatsvertrauenslisten) mit dem Assistenten für Zertifi-
katsvertrauenslisten spielend einfach verwalten.
Kapitel 1 • Merkmale von Internet Information Server 5.0 23
1.3 Administration
IIS 5.0 bietet auch eine ganze Reihe neuer Verwaltungsfunktionen. Nachfolgend
werden diese aufgelistet und kurz beschrieben; im Verlauf dieses Buches soll
dann näher auf die einzelnen Funktionen eingegangen werden.
1.3.4 Prozesskontenführung
Angesichts der steigenden Verbreitung von CGI- und ASP-Skripts auf den Ser-
vern wäre es gut, wenn es eine Möglichkeit gäbe, die Auswirkungen solcher
Skripte auf die Systemleistung zu verifizieren.
Die Prozesskontenführung ist neu unter IIS 5.0 und bietet Ihnen genau diese
Funktionalität, denn hiermit können Sie beobachten, welche Websites auf Ihrem
Server wie viel CPU-Ressourcen für sich beanspruchen.
24 Programmierbarkeit
1.3.5 Prozessbeschränkung
Nachdem Sie mit der Prozesskontenführung festgestellt haben, welche Website
oder Skripte wie viel kostbare Rechnerleistung benötigen, können Sie die CPU-
Leistung für bestimmte Prozessanwendungen beschränken.
Diese Art der Prozessbeschleunigung limitiert die CPU-Zeit für eine Applikation,
nicht jedoch die Netzwerkbandbreite. Die Beschränkung der Netzwerkbandbreite
wird in Kapitel 11 beschrieben.
1.3.7 Remoteverwaltung
Da dieses Thema in letzter Zeit so heiß diskutiert wurde und noch wird, wurde der
Remoteverwaltung in diesem Buch ein eigenes Kapitel gewidmet. Wir werden
einen Blick auf die Möglichkeiten werfen, die IIS 5.0 beinhaltet, um Server von
praktisch jedem beliebigen Webbrowser auf allen Plattformen administrieren zu
können.
1.3.8 Terminaldienste
Terminaldienste sind eigentlich ein Merkmal von Windows 2000 Server. Durch
ihre Implementierung in das Betriebssystem können Sie nun 32-Bit-Anwendun-
gen von jedem korrekt konfigurierten Client aus, der solche Anwendungen nor-
malerweise nicht unterstützen würde, auf dem Server starten.
Was das mit IIS zu tun hat? Nun, tatsächlich fällt diese Funktion in den Bereich
»Remoteverwaltung«, denn sie gestattet Ihnen die Administrierung Ihres IIS-
Servers auf gleiche Weise, als würden Sie direkt davor sitzen.
1.4 Programmierbarkeit
Dank des serverseitigen Skripting haben ASP und XML die Entwicklergemeinde
im Sturm erobert, und deswegen ist es naheliegend, in Microsofts bedeutendste
Internetplattform Programmierfunktionen zu integrieren.
Kapitel 1 • Merkmale von Internet Information Server 5.0 25
1.4.1 ASP
Fast allen IIS-Administratoren ist der Begriff »ASP« (Active Server Pages)
bereits geläufig. Hoffentlich trifft das auch auf Sie zu. ASP wurde bereits unter
IIS 4.0 unterstützt und die Version 5.0 setzt diese Tradition fort.
ASP ermöglicht Entwicklern und Webdesignern die Erstellung dynamischer,
browserunabhängiger Websites, indem Anwendungen und Skripts auf dem Server
anstatt auf dem Client ausgeführt werden.
ASP-Entwickler müssen weder CGI noch ISAPI verwenden, sondern können ein-
fach VBScript- oder JScript-Code in die HTML-Seite integrieren. Ferner haben
sie auch vollständigen Zugriff auf die HTTP-Antwort- und Anforderungsdaten-
ströme.
Ein weiterer wesentlicher Vorteil von ASP ist die Möglichkeit der Datenbankan-
bindung.
Neue ASP-Merkmale
ASP hat unter IIS 5.0 ein paar Erweiterungen bekommen, darunter
• Flusskontrollfähigkeit bei der Weiterleitung von Anfragen,
• leistungsoptimierte Objekte,
• Fehlerbehandlung.
Weitere neue Merkmale sind in den Kapiteln 16 und 17 beschrieben, in denen es
um ASP und seine installierbaren Komponenten geht.
1.4.2 Anwendungsschutz
IIS ermöglicht es Ihnen, Anwendungen in verschiedenen Prozessen ausführen zu
lassen. Standardmäßig führt IIS Anwendungen in einem Poolprozess aus, der
vom IIS-Prozess getrennt ist. Dies ähnelt der Ausführung einer Out-of-Process-
Anwendung.
Sie können auch lebenswichtige Anwendungen in einem eigenen Prozess ausfüh-
ren, wo sie weder andere Anwendungen stören noch von anderen Anwendungen
gestört werden.
1.5.3 WebDAV
WebDAV (Web Distributed Authoring and Versioning, über das Internet verteilte
Erstellung und Versionsverwaltung) ermöglicht es Autoren, Dateien auf dem
Webserver über eine HTTP-Verbindung zu manipulieren. Das bedeutet, Sie kön-
nen Dateien in den WebDAV-Verzeichnissen auf dem Server über einen konventi-
onellen Webbrowser, die Windows 2000-Netzwerkumgebung oder Microsoft
Office 2000 kopieren, löschen oder bearbeiten.
Ferner gestattet WebDAV Ihnen, eine Versionskontrolle von Dateien durchzufüh-
ren, indem Sperrmöglichkeiten bereitgestellt werden. Dadurch ist es möglich,
dass mehrere Benutzer die gleiche Datei betrachten können, aber nur eine befugte
Person diese Datei modifizieren kann.
WebDAV verwendet dabei die Sicherheitsfunktionen von IIS und dem NTFS-
Dateisystem von Windows 2000.
Form von Antworten an Clients gesendet werden, die mit Ihrer Website verbun-
den sind; die Funktion lässt sich aber auch zum Verschicken administrativer
Warnmeldungen an Webadministratoren benutzen.
Hinweis
Der zu IIS 5.0 gehörende NNTP-Dienst ist nicht als Push- oder Pullserver
für Nachrichten in Ihrer Organisation gedacht, sondern für Intranetdis-
kussionsforen.
1.5.5 PICS
PICS (Platform for Internet Content Selection Ratings, Plattform zur Bewertung
von Internetinhalten) ermöglicht Ihnen die Klassifizierung Ihrer Websites für den
Fall, dass solche Klassifizierungen vom Client angefordert werden. Beispiels-
weise können über PICS Inhalte klassifiziert werden, die nicht für Minderjährige
geeignet sind.
1.5.6 FTP-Wiederaufnahme
Ein weiterer langersehnter Neuzugang bei IIS 5.0 ist die FTP-Wiederaufnahme,
die die Fortsetzung eines unterbrochenen FTP-Downloads ermöglicht. Auf diese
Weise müssen Client oder Benutzer den Download nicht von vorne beginnen,
wenn dieser unterbrochen wurde.
1.5.7 HTTP-Komprimierung
Wenn bei Ihren Servern und Clients die Komprimierung aktiviert ist, dann erzie-
len Sie dank dieser HTTP-Komprimierung kürzere Übertragungszeiten.
Statische Dateien können zum schnelleren Zugriff komprimiert und zwischenge-
speichert werden und IIS kann auf Verlangen auch eine Komprimierung dyna-
misch generierter Seiten vornehmen.
1.6 Fazit
In diesem Kapitel wurden Ihnen eine Menge neuer oder modifizierter Funktionen
von IIS 5.0 vorgestellt. Diese neuen Merkmale und Erweiterungen verbessern die
Leistung, erhöhen die Sicherheit und optimieren die Administrierbarkeit von
IIS 5.0. Alle hier erwähnten Funktionen werden in den nun folgenden Kapiteln
detailliert erläutert.
Kapitel 2
Verwaltung von Websites
Sie werden mir vermutlich zustimmen, wenn ich behaupte, dass sich eine Menge
getan hat, seit wir unsere ersten Websites ins Internet gestellt haben. Ich weiß
noch, wie ich Design und Layout meiner ersten Homepage in aller Eile auf jenem
Webserver zusammenpfuschte, damit die große weite Internetwelt sie sehen
konnte. Eine Menge Leute hatten die gleiche Idee, und deswegen sah man überall
kleine Bauarbeiter mit der Unterschrift »Under Construction«!
Damals legte ich meine Webseiten auf dem Server meines Internetproviders ab.
Das tue ich übrigens noch heute – sage und schreibe 5 Mbyte Festplattenspeicher
stellt mir mein Provider für eine Visitenkarte im Netz zur Verfügung. Das meiste,
was dort gespeichert ist, ist in Visual Basic geschrieben.
Aber wenn man sich dieses Szenario betrachtet – eine Website, die auf dem
Server eines Internetproviders liegt –, dann scheint das zwar auf den ersten Blick
ausreichend. Und doch fehlt etwas in diesem Bild: Die Möglichkeit, die Site
genauso zu verwalten, wie wir das wollen!
Die meisten Provider verwenden UNIX-Server und auch eine Menge Linux-
Server sind vorhanden. Ferner gibt es Webspaceprovider, die Festplattenspeicher
und zugehörige Dienste zu durchaus angemessenen Preisen anbieten – diese
basieren dann auf UNIX, NetWare oder Windows NT. Die Zahl der Anbieter, die
mit FrontPage Server Extensions arbeiten, nimmt zu, und so können Sie Ihre
Websites vom Arbeitszimmer oder Büro aus erstellen und administrieren. Aber
immer noch auf den Servern eines Providers.
Das mag für Einzelbenutzer, den Mittelstand und Selbstständige, die vielleicht
nur ein oder zwei Seiten als »Visitenkarte« im Web benötigen, ausreichend sein,
aber Sie lesen dieses Buch schließlich, weil Sie als IIS-Administrator für eine
große Organisation arbeiten und für die Erstellung und Wartung vollständiger und
oft sehr komplexer Websites verantwortlich sind, die häufig mehr Festplattenka-
pazität benötigen als die Anwendungen eines Durchschnittsbenutzers. Leistungs-
optimierung, höchste Sicherheit und bestmögliche Nutzung des investierten Kapi-
tals genießen bei IIS-Administratoren höchste Priorität.
Dieses Kapitel befasst sich mit der Verwaltung Ihres IIS 5.0-Servers für Web-,
FTP-, SMTP- und NNTP-Dienste. Sie finden hier Informationen, die Ihnen dabei
helfen sollen, das Beste aus IIS 5.0 herauszuholen.
Die Verwaltung von IIS 5.0 beginnt immer mit dem Aufruf der MMC (Microsoft
Management Console). Abbildung 2.1 zeigt das Snap-In INTERNET-INFORMATI-
ONSDIENSTE, das zur Administrierung verwendet wird.
Natürlich sind FrontPage und textbasierte Editoren nicht die einzigen Werkzeuge
zur Erstellung von Websites. Und beim IIS ist es auch völlig unwesentlich, wel-
ches Programm Sie verwenden; dieser Webserver akzeptiert sie alle.
Zu den Alternativen gehören andere Programme von Microsoft Office. Sie kön-
nen Ihre Word-Dokumente ebenso veröffentlichen wie Excel-Tabellenblätter, Prä-
sentationen aus dem Publisher und sogar Access-Datenbanken; verwenden Sie
einfach die vielfältigen Konvertierungs- und Exportfunktionen dieser Anwendun-
gen.
Welches Programm Sie auch verwenden: Es tut gut zu wissen, dass IIS 5.0 sie alle
mit offenen Armen empfangen wird.
Hinweis
Auch wenn nicht jeder Browser auf der Clientseite VBScript unterstützt:
Befürchten Sie nicht, jetzt JScript erlernen zu müssen, wenn Sie alle
Browsertypen abdecken wollen. Sie können VBScript auf der Serverseite
verwenden und plattformunabhängige Skripts erzeugen, die nur HTML-
Code an den Client schicken. Dadurch wird der Bedarf an mehreren Ver-
sionen einer Seite reduziert.
Ich kann Ihnen sicher nicht in ein oder zwei Kapiteln dieses Buches alles beibrin-
gen, was Sie über ASP wissen müssen; das Thema füllt sicher allein ein Buch für
sich. Ich kann Ihnen jedoch so viel zeigen, dass Sie für die Erfüllung der Verwal-
tungsaufgaben, von denen hier die Rede sein wird, ASP verwenden können.
Skripts, die auf dem Server ausgeführt werden, werden im HTML-Code der Seite
abgelegt und sind von den öffnenden und schließenden Tags <%> und </%> einge-
fasst. Ferner müssen Sie am Anfang der Seite – vor allen anderen Elementen – die
Skriptsprache spezifizieren (siehe Listing 2.1).
<%@ LANGUAGE=VBScript %>
<HTML>
<HEAD>
Kapitel 2 • Verwaltung von Websites 33
<TITLE>Seitenname</TITLE>
</HEAD>
<BODY>
<% Dim I
For I = 1 to 5
%>
</BODY>
</HTML>
Listing 2.1 zeigt einen kurzen Quellcode, bestehend aus dem HTML-Basiscode
und ein wenig ASP-Code in VBScript, der die Schriftgröße von 1 bis 5 vergrö-
ßert.
Auch wenn ASP ein großartiges Werkzeug für den Datenzugriff und andere
bereits genannte Funktionen ist (wir werden uns damit noch umfassend in
Kapitel 16 beschäftigen), können Sie es auch für triviale Aufgaben bei der Web-
serververwaltung einsetzen.
Eines der schönsten Dinge, die ich immer wieder bei Websites sehe, sind Naviga-
tionsleisten, die eine seitenübergreifende Konsistenz aufweisen. Microsoft Front-
Page ermöglicht so etwas mit Hilfe der Themen, die mit dem Programm ausgelie-
fert werden. Wenn Sie Ihre Seiten mit einem textbasierten Editor erstellen,
können Sie den gleichen Effekt recht einfach mit ASP oder Frames erzielen. Ich
werde Ihnen an dieser Stelle die ASP-Implementation erläutern.
Der erste Schritt besteht darin, eine Seite zu erstellen, die den für die Navigations-
leiste benötigten HTML-Code enthält. Als Nächstes erstellen Sie Ihre Hauptsei-
ten in HTML und verwenden die ASP-Anweisung #include, um die Navigations-
leiste in Ihre Seiten einzubinden. ASP kann das mit einer einzigen Zeile:
<!-- #include file="navbar.stm" -->
Die Listings 2.2, 2.3 und 2.4 zeigen drei kurze Beispiele mit sehr einfachem Auf-
bau. Sie können den Code einfach in die Zwischenablage kopieren und dann in
Ihrem HTML-Lieblingseditor einfügen und dann sehen, wie die Seiten funktio-
nieren.
Die erste Seite navbar.stm (Listing 2.2) ist eigentlich eine HTML-Seite, die ein-
fach die Dateierweiterung .stm erhalten hat. Wenn ASP auf diese Erweiterung
stößt, weiß es, dass es sich bei der Datei um eine #include-Datei handelt.
34 ASP zur Websiteverwaltung nutzen
<html>
<head>
<title>Seite mit Navigationsleiste</title>
</head>
<body>
</body>
</html>
Listing 2.3 enthält Ihre Homepage home.asp, die auch die Eingangsseite Ihrer
Website ist. Beachten Sie die Verwendung des Skripttags am Anfang des Doku-
ments.
<%@ LANGUAGE=VBScript %>
<html>
<head>
<title>Homepage</title>
</head>
<body>
<p>
Das ist der Hauptteil der Seite.<p>
<BR><BR>
Hier befindet sich die Navigationsleiste.
<!-- #include file="navbar.stm" -->
</body>
</html>
Die letzte Seite kontakt.asp (Listing 2.4) soll einfach nur zeigen, dass durch
schlichte Verwendung der Anweisung #include ein und dieselbe Datei auf mehre-
ren Seiten benutzt werden kann. Weder die Homepage noch kontakt.asp beinhal-
ten den HTML-Code für die Navigationsleiste. Dieses Vorgehen bringt eine
Menge Zeitersparnis.
<%@ LANGUAGE=VBScript %>
<html>
<head>
<title>Kontaktseite</title>
</head>
<body>
<!-- #include file="navbar.stm" -->
<h1 align="center">Dies ist unsere Kontaktseite!</h1>
<hr>
<p>Gerry O'Brien – <a href="mailto:gkcomput@nbnet.nb.ca">gkcomput@nbnet.nb.ca
</a></p><p>Markt und Technik – <a href="http://www.mut.de">http://www.mut.de
</a></p><p> </p>
<p align="center"> </p>
<!-- #include file="navbar.stm" -->
</body>
</html>
Beachten Sie, dass der Dateiname den vollständigen Pfad zur Datei enthalten
muss, sofern sich diese nicht im gleichen Verzeichnis befindet wie die aufrufende
HTML-Datei. Außerdem hat es sich durchgesetzt, #include-Dateien mit der
Erweiterung .inc oder .stm zu versehen.
Warnung
Wenn Sie mit ASP-Seiten und entsprechendem Code arbeiten, denken
Sie immer daran, jede Seite, die ASP-Code enthält, mit der Erweiterung
.asp zu versehen, da der Code andernfalls nicht verarbeitet werden kann.
Hinweis
Wenn eine Ihrer ASP-Seiten im Browser angezeigt wird, dann rufen Sie
mal mit der entsprechenden Browserfunktion die Anzeige des Quelltex-
tes auf und vergleichen Sie den im Editor angezeigten Quellcode mit
dem Code, den Sie bei der Erstellung der Seite verwendet haben. Sie
werden feststellen, dass ASP-Code nicht angezeigt wird. Dieses nette
36 Verzeichnisse
kleine Feature verhindert sehr effektiv, dass der Clientbenutzer sich Ihren
Code zu eigen macht oder nachvollziehen kann, wie Ihre Seite erstellt
wurden.
Sie können ASP verwenden, um Ihre Benutzer auf einen korrekten URL umzulei-
ten, falls Sie Änderungen an der Webseite vorgenommen haben, die zur Folge
hatten, dass vorhandene URLs ungültig wurden; diese Umleitung erreichen Sie
ganz einfach mit der folgenden Zeile:
<% Response.Redirect (neue url) %>
ASP enthält auch eine Komponente namens Browser Capabilities. Mit dieser
Komponente können Sie spezielle Funktionen, die den einzelnen Browsern zu
eigen sind, bei diesen aktivieren, wenn sie Ihre Website besuchen. (Wenn Sie
diese Funktion verwenden wollen, sollten Sie mit COM-Komponenten vertraut
sein. Informationen dazu finden Sie in den meisten Lehrbüchern zu ASP.)
2.4 Verzeichnisse
Websites werden in Verzeichnissen gespeichert. Eigentlich eine triviale Aussage,
aber sie besagt alles über die Struktur einer Website. Die meisten Internetadminis-
tratoren werden eine logische Verzeichnisstruktur erstellen, die aus ihrer Perspek-
tive heraus sinnvoll erscheint. Normalerweise sind unterhalb des Basisverzeich-
nisses Unterverzeichnisse vorhanden, z.B. für Bilder, Skripts, #include-Dateien
usw.
Was IIS betrifft, gibt es zwei Verzeichnistypen, nämlich Basisverzeichnisse und
virtuelle Verzeichnisse. Diese Typen werden in den beiden folgenden Abschnitten
erklärt.
2.4.1 Basisverzeichnisse
Jede Website muss über ein Basisverzeichnis verfügen. In den meisten Fällen
wird dies <laufwerk>/InetPub/wwwroot sein, wobei <laufwerk> der Buchstabe
des Laufwerks ist, auf dem Sie IIS installiert haben. Sie können ein beliebiges
Verzeichnis als Basisverzeichnis auswählen.
Um ein Basisverzeichnis für Ihre Website zu erstellen, können Sie den Windows-
Explorer oder das Arbeitsplatz-Symbol verwenden. Erstellen Sie das Verzeichnis
in dem gewünschten Ordner oder Laufwerk. Sie können beispielsweise ein Ver-
zeichnis unterhalb des Ordners wwwroot erstellen, der sich im Verzeichnis Inet-
Pub befindet (zum Ordner wwwroot gelangen Sie mit dem Windows-Explorer).
Wählen Sie bei Anzeige des Ordners wwwroot den Menüeintrag Datei/Neu/
Ordner und geben Sie dem Verzeichnis einen Namen.
Kapitel 2 • Verwaltung von Websites 37
Wie Sie der Abbildung 2.2 entnehmen können, sind für die Auswahl eines Basis-
verzeichnisses drei Möglichkeiten vorhanden:
• Ein Verzeichnis auf diesem Computer. Verwenden Sie diese Option, wenn
sich das Basisverzeichnis auf demselben Computer befindet wie IIS.
• Eine Netzwerkfreigabe auf einem anderen Computer. Diese Option ist zu
wählen, falls Sie Ihr Basisverzeichnis auf einem anderen Computer erstellt und
dann freigegeben haben.
• Eine Umleitung zu einem URL. Diese Option sollten Sie verwenden, wenn
Ihr Basisverzeichnis auf einem Server im Internet liegt.
38 Verknüpfungen umleiten
Abb. 2.3: Die Registerkarte WEBFREIGABE, auf der die Eigenschaften für das zu
erstellende virtuelle Verzeichnis eingestellt werden
3. Eine dauerhafte Umleitung für diese Ressource. Wenn der Browser die
Meldung 301 Permanent Redirect (Dauerumleitung) unterstützt, dann teilt die-
se Option mit der korrekten Angabe der neuen URL dem Browser mit, dass Le-
sezeichen, die sich auf den alten URL beziehen, automatisch aktualisiert
werden sollen.
Abb. 2.4: Auf der Registerkarte BASISVERZEICHNIS sehen Sie, wie die Umleitung für
das Basisverzeichnis zu einem anderen URL konfiguriert ist
Die Umleitungsvariable, die Sie zur Weiterleitung der im URL enthaltenen Para-
meter (wie etwa der Parameter ?alter=35) benutzen würden, heißt $P. Durch Ver-
wendung dieser Variablen können Sie festlegen, dass der Parameter der Umlei-
tungsadresse hinzugefügt wird. Diese Umleitungsadresse hieße dann
http://www.neuerserver.de/neufeedback/newform.aspPARAMS=$P
Sie müssen die Option ...DEM EXAKTEN OBEN ANGEGEBENEN URL aktivieren, um
zu verhindern, dass IIS den Dateinamen an den URL anhängt und damit die
Umleitungsanforderung ungültig macht.
2.6 Inhalte
Die Inhalte einer Website müssen aus zwei Kontexten heraus betrachtet werden:
Dem Ablauf seiner Gültigkeit und der Inhaltsklassifikation.
Wenn Sie diese beiden Aspekte Ihres Websiteinhalts adäquat verwalten, machen
Sie das Browsing für den Client effizienter und auch angenehmer. Sie verhindern,
dass Kunden veraltete Informationen angezeigt werden, und gestatten es Eltern,
Inhaltsbeschränkungen zu konfigurieren, die verhindern, dass Minderjährige für
sie ungeeignete Webseiten betrachten können.
Hinweis
Durch Auswahl der entsprechenden Komponente im MMC-Fenster kön-
nen Sie den Inhalt von Dateien, Verzeichnissen oder der gesamten Web-
site ungültig werden lassen.
Abb. 2.5: Die Registerkarte HTTP-HEADER, auf der Sie alle Parameter für den Ablauf
des Objektinhalts einstellen können
In Abbildung 2.5 habe ich festgelegt, dass der Inhalt meiner Verwaltungswebsite
zu einem bestimmten Datum ungültig wird, nämlich am 31. März 2001 um
0:00 Uhr.
Mit den anderen beiden Optionen können Sie den Inhalt wahlweise sofort oder
nach einer bestimmten Anzahl von Tagen ablaufen lassen. Wird eine Seite dyna-
misch generiert, dann sollte der Inhalt sofort ablaufen – etwa bei Seiten, auf
denen der Benutzer ein Formular ausfüllt; dieser Inhalt dürfte nicht zwischenge-
speichert werden. Ein Beispiel für Seiten, die nach einer bestimmten Anzahl von
Tagen auslaufen, wären Seiten mit zeitlich begrenzten Sonderangeboten.
Kapitel 2 • Verwaltung von Websites 43
Abb. 2.6: Die Registerkarte KLASSIFIKATIONSDIENST für die Klassifikation einer Site
Sie können die Website des RSAC (Recreational Software Advisory Council)
auch direkt aufrufen, indem Sie auf die Schaltfläche FRAGEBOGEN ZUR KLASSIFI-
KATION klicken. Dort können Sie Ihre Site registrieren lassen und Beispielfrage-
bögen betrachten.
44 Fußzeilen
Aktivieren Sie nun die Registerkarte KLASSIFIKATION, auf der der Inhalt Ihrer
Site, einer Datei oder eines Verzeichnisses klassifiziert wird. Abbildung 2.7 zeigt
ein Beispiel für eine Klassifikation des Faktors GEWALT. Durch Verschieben des
Schiebereglers können Sie die Klassifikation ändern.
Abb. 2.7: Auf der Registerkarte KLASSIFIKATION können Sie nicht nur eine
Inhaltsklassifikation auswählen, sondern den Grad auch einstellen
Ich hätte die Klassifikation auch auf STUFE 1: KAMPF statt – wie abgebildet – auf
STUFE 2: TÖTEN stellen können; das ist weniger gewalttätig.
2.7 Fußzeilen
Fußzeilen auf Webseiten werden ähnlich verwendet wie Fußzeilen bei einem
Textverarbeitungsdokument. Sie legen in einer Fußzeilendatei Informationen ab,
die am Ende jeder Seite Ihrer Site angezeigt werden sollen.
Sie können mit Fußzeilendateien Informationen wie Kontaktadressen, Infos zum
Autor der Site oder auch ein Firmenlogo anzeigen lassen.
Erstellen Sie zunächst eine HTML-Datei mit den zur Inhaltsdefinition notwendi-
gen HTML-Tags. Sie müssen kein vollständiges Dokument mit <HTML>, <HEAD>,
Kapitel 2 • Verwaltung von Websites 45
<BODY> und anderen Tags schreiben; erstellen Sie gerade so viel Code, dass der
Inhalt in HTML-Form angezeigt wird. Listing 2.5 zeigt einen wahrhaft kurzen
Quellcode:
<I>Gerry O'Brien</I><p>
<a href=mailto:gkcomput@nbnet.nb.ca><I>gkcomput@nbnet.nb.ca</I>
Damit Ihre Fußzeile am Ende jeder Seite angefügt wird, müssen Sie sie im ent-
sprechenden Eigenschaftsdialogfeld spezifizieren. Starten Sie also den Internet-
dienst-Manager (sofern er nicht bereits läuft) und wählen Sie die Standardwebsite
oder eine andere Site Ihrer Wahl. Rufen Sie wie üblich das Dialogfeld EIGEN-
SCHAFTEN auf und aktivieren Sie die Registerkarte DOKUMENTE. Diese ähnelt der
in Abbildung 2.8 gezeigten.
Abb. 2.8: Die Registerkarte DOKUMENTE, wo Sie den Standort der Fußzeilendatei
festlegen
Schaltfläche DURCHSUCHEN anklicken und dann eine Datei auf dem lokalen
Rechner oder im Netzwerk auswählen.
Warnung
Wenn häufig auf die Seiten zugegriffen wird, kann die Verwendung einer
Dokumentfußzeile zu Leistungseinbußen beim IIS führen.
Hinweis
Fußzeilen funktionieren auf .asp-Seiten nicht, sondern nur auf .html- und
.htm-Seiten. Allerdings brauchen Sie auf .asp-Seiten ohnehin keine Fuß-
zeile, da Sie für den gleichen Zweck #include-Dateien verwenden kön-
nen.
Hinweis
#include-Dateien müssen aufgrund der speziellen Verarbeitungsanforde-
rungen korrekt benannt werden, damit IIS sie finden kann. Die Standard-
erweiterungen für solche Dateien sind .stm, .shtm und .shtml.
Kapitel 2 • Verwaltung von Websites 47
Abbildung 2.9 zeigt das Dialogfeld des Verzeichnisses /InetPub/Scripts auf mei-
nem Webserver. Beachten Sie, dass die Optionen AUSFÜHRBERECHTIGUNGEN
unten im Dialogfeld die Einstellung SKRIPTS UND AUSFÜHRBARE DATEIEN hat;
eine solche Berechtigung erscheint für ein Verzeichnis, dass ausführbare Skripts
enthält, doch eher sinnvoll.
Sie sehen (und werden es auch weiterhin sehen), dass die Verwendung von SSIs
auf Ihrer Website eine Menge Vorteile bringt. Ungeachtet dessen kann der sorg-
lose Umgang mit Includes dazu führen, dass Seiten nicht geladen oder nicht wie
48 Server-Side Includes (SSI)
gewünscht angezeigt werden, weil die #include-Datei nicht gefunden wird oder
IIS sie nicht verarbeiten kann. Sie müssen also bei der Verwaltung Ihrer Site kon-
sequent vorgehen.
Wenn Sie – warum auch immer – keine #include-Dateien mehr verwenden oder
ihre Verarbeitung deaktivieren wollen, dann können Sie dies tun; gehen Sie wie
folgt vor, um Server-Side Includes zu deaktivieren:
1. Wählen Sie im Internetdienst-Manager die Website, für die Sie die Includes
deaktivieren wollen, und öffnen Sie deren Dialogfeld EIGENSCHAFTEN.
2. Aktivieren Sie die Registerkarte BASISVERZEICHNIS (oder VERZEICHNIS).
3. Klicken Sie im Abschnitt ANWENDUNGSEINSTELLUNG auf KONFIGURATION.
4. Nun wird ein Dialogfeld ähnlich dem in Abbildung 2.10 gezeigten aufgerufen.
Stellen Sie sicher, dass die Registerkarte ANWENDUNGSZUORDNUNGEN selek-
tiert ist.
5. Wählen Sie die Dateitypen .stm, .shtm und/oder .shtml und klicken Sie auf die
Schaltfläche ENTFERNEN.
Durch diesen Vorgang werden diese drei Erweiterungen, die der Kennzeichnung
von #include-Dateien dienen, entfernt.
#config
Diese Anweisung dient der Formatierung von Datumsangaben, Dateigrößen oder
Fehlermeldungen, die an den Client gesendet werden. Sie kann nicht in .asp-
Dateien benutzt werden, sondern findet ausschließlich in statischen HTML-
Dateien Verwendung.
Syntax:
<!-- #config parameter=zeichenkette -->
• TIMEFMT. Dieser Parameter erlaubt Ihnen die Spezifizierung eines Formats für
Datum und Uhrzeit, das an den Clientbrowser geschickt wird. Sie können bei-
spielsweise die Option %A im Parameter zeichenkette verwenden, um den voll-
ständigen Namen des Tages anzeigen zu lassen, z.B. »Mittwoch«. Eine
vollständige Liste der verfügbaren Datums- und Uhrzeitformatierungen finden
Sie in der Onlinehilfe für IIS.
<!-- #config TIMEFMT="%m/%d/%y" -->
50 Server-Side Includes (SSI)
Bei dieser Formatierung wird die Dateigröße in Byte (statt Kbyte) angezeigt.
#echo
Diese Anweisung können Sie verwenden, um Variablen in den HTML-Code ein-
zufügen. Wie auch die Anweisung #config kann diese Anweisung nur in HTML-
Dateien, nicht aber in .asp-Dateien benutzt werden.
Hinweis
Wenn Sie mit Variablen arbeiten, die Sie in eine .asp-Seite einfügen wol-
len, dann können Sie die Methoden Response.ServerVariables ver-
wenden. Weitere Informationen hierzu finden Sie in der ASP-
Dokumentation.
Syntax:
<!-- #echo var=variable -->
variable bestimmt dabei die Variable, die Sie einfügen wollen. Die folgenden
Werte sind hierfür gültig:
• ALL_HTTP. Beinhaltet HTTP-Header, die nicht bereits in andere Variablen ein-
gelesen wurden. Diese bestehen aus Zeichenketten mit der Endung NULL.
Einzelne Header sind durch Zeilenwechsel voneinander getrennt.
• AUTH_PASSWORD. Diese Variable ist nur für die Standardauthentifizierung vor-
handen. Sie enthält den Wert, den der Client im Dialogfeld AUTHENTIFIZIE-
RUNG eingegeben hat.
• AUTH_TYPE. Diese Variable zeigt den verwendeten Authentifizierungstyp an –
etwa Standardauthentifizierung oder integrierte Authentifizierung. Wenn die
Variable leer ist, wurde keine Authentifizierung verwendet.
• AUTH_USER. Der Wert Benutzer, der im Dialogfeld CLIENTAUTHENTIFIZIERUNG
eingegeben wurde.
• CONTENT_LENGTH. Anzahl der Bytes, die das Skript vom Client erwartet.
• CONTENT_TYPE. Art der Daten, die über die Methode POST angefordert werden.
Kapitel 2 • Verwaltung von Websites 51
• DATE_GMT. Leitet das aktuelle Datum mit Bezug auf die GMT-Zeit (Greenwich
Mean Time) weiter.
• DATE_LOCAL. Entspricht DATE_GMT, nur mit Bezug auf die lokale Zeit.
• REMOTE_USER. Der vom Client gesendete und vom Server authentifizierte Be-
nutzername. Bei anonymen Anmeldungen bleibt diese Variable leer.
• REQUEST_METHOD. Die HTTP-Anforderungsmethode.
• SERVER_SOFTWARE. Name und Version der Webserversoftware, die auf die An-
forderung antwortet.
• URL. Der reine URL ohne weitere Parameter.
#exec
Diese Anweisung können Sie verwenden, um auf dem Webserver eine Anwen-
dung oder einen Systembefehl ausführen zu lassen. Wie auch die Anweisung
#config kann diese Anweisung nur in HTML-Dateien, nicht aber in .asp-Dateien
benutzt werden.
Syntax:
<!-- #exec befehlstyp=befehlsbeschreibung -->
befehlstyp ist der Typ des aufrufenden Befehls. Dieser kann die folgenden Werte
haben:
• CGI. Dieser Typ ruft ein CGI- oder ein ASP-Skript oder aber eine ISAPI-
Anwendung auf. Sie müssen Pfad und Namen der Anwendung eingeben, ge-
folgt vom ? und allen Parametern im Parameter befehlsbeschreibung.
• CMD. Hiermit rufen Sie einen Systembefehl auf. Sie geben den vollständigen
Pfad und alle gegebenenfalls benötigten Parameter an, die Sie – getrennt durch
Leerzeichen – im Parameter befehlsbeschreibung benennen.
Warnung
Diese Funktion ist standardmäßig deaktiviert und Sie sollten sie nur mit
größter Vorsicht verwenden. Ein Systembefehl wie beispielsweise format
könnte durchaus aufgerufen werden, womit sich eine Festplatte formatie-
ren ließe.
#flastmod
Diese Anweisung teilt dem Webserver mit, die Angabe der Zeit einzufügen, an
der die benannte Datei zum letzten Mal geändert wurde. Auch hier gilt wieder:
Diese Anweisung kann nur in HTML-Dateien, nicht aber in .asp-Dateien benutzt
werden.
Syntax:
<!-- #flastmod pfadtyp=dateiname -->
pfadtyp bestimmt, ob es sich hierbei um einen virtuellen oder einen realen Pfad
handelt. Die Werte lauten:
• FILE. Pfad, der auf das Verzeichnis verweist, in dem die Datei gespeichert ist.
Der Parameter dateiname bezeichnet den Namen der Datei, von der Sie wissen
wollen, wann diese zum letzten Mal modifiziert wurde.
#fsize
Diese Anweisung bewirkt, dass der Server die Größe der angegebenen Datei in
die HTML-Seite einfügt. Diese Anweisung kann nur in HTML-Dateien, nicht
aber in .asp-Dateien benutzt werden.
Syntax:
<!-- #fsize pfadtyp=dateiname -->
#include
Wir haben diese Anweisung bereits weiter oben beschrieben und verwendet. Sie
weist den Server an, den Inhalt der spezifizierten Datei zu lesen und zu verarbei-
ten. Sie können diese Anweisung sowohl in HTML- als auch in .asp-Dateien ver-
wenden.
Syntax:
<!-- #include pfadtyp=dateiname -->
Auch hier weist pfadtyp wieder darauf hin, ob ein realer oder ein virtueller Pfad
vorliegt. dateiname bezeichnet die einzufügende Datei.
Hinweis
Es soll auch an dieser Stelle noch einmal darauf hingewiesen werden,
dass in jedem Fall eine der Dateierweiterungen .stm, shtm oder shtml zu
verwenden ist. Dies gilt jedoch nicht für den Fall, dass Sie unter den
ANWENDUNGSZUORDNUNGEN eine andere Erweiterung zugeordnet
haben.
2.9 Fazit
Zur Verwaltung einer Website gehört mehr als nur die Erstellung und Aktualisie-
rung der HTML-Dateien, die auf dem Server vorhanden sind. Durch die Verwen-
dung von ASP-Code in Form von VBScript oder JScript können Sie die Bearbei-
tung alltäglicher Aufgaben weitaus effizienter gestalten.
Wichtig ist außerdem die Umleitung von Anfragen, falls Clients verschobene
oder gelöschte Seiten auf dem Server anfordern. Durch Verwendung der Klassifi-
zierungsmöglichkeiten von IIS 5.0 können Sie Ihren Besuchern die Möglichkeit
bieten, bestimmte Seiten inhaltsbezogen auszufiltern.
54 Fazit
Ferner haben Sie gesehen, wie sich Server-Side Includes nutzen lassen, um Daten
zu erhalten oder zurückzugeben, die sich auf bestimmte Dateien und Dokumente
beziehen, mit denen Ihr Server arbeitet.
Teil II
Administration
Kapitel 3 Administration von Websites und FTP-Sites
Kapitel 4 Administration von SMTP- und NNTP-Diensten
Kapitel 5 Publizieren mit WebDAV
Kapitel 6 Namensauflösung
Kapitel 7 Anwendungen konfigurieren
Kapitel 8 Sicherheit
Kapitel 9 Benutzerdefinierte Fehlermeldungen
Kapitel 10 Aktivitäten von Sites protokollieren
Kapitel 11 Leistungsoptimierung
Kapitel 12 Replikation und Clusterunterstützung
Kapitel 13 Administrationsskripts
Kapitel 14 IIS programmgesteuert administrieren
Kapitel 15 Remoteadministration
Kapitel 3
Administration von Websites und
FTP-Sites
3.1 Einführung 58
3.2 Sites starten und beenden 60
3.3 Sites hinzufügen 64
3.4 FTP-Verzeichnisse, Meldungen und Ausgabeformate 69
3.5 Websites benennen 72
3.6 IIS erneut starten 74
3.7 Unterstützung von Hostheadernamen 77
3.8 Voreinstellungen ändern 77
3.9 IIS-Einstellungen sichern und wiederherstellen 79
3.10 Konten für Website-Operatoren 82
3.11 Abwärtskompatible Siteadministrierung 83
3.12 Fazit 83
58 Einführung
3.1 Einführung
In diesem Kapitel werden wir alle Aufgaben und Probleme besprechen, die bei
der Administration von Websites und FTP-Sites auf Ihrem IIS-Servers auftreten
können. Wenn Sie Ihre FTP- oder Website erstellt und auf den Server übertragen
haben, werden Sie feststellen, dass die Administration der Site eine Menge Res-
sourcen verbraucht. Es wäre schön, wenn IIS die Verwaltungsaufgaben selbst aus-
führen könnte – man will ja nicht immer nur babysitten.
Es ist aber ein weiter Weg, bis Ihre FTP- und Websites vollständig fehlerfrei
arbeiten. Auch wenn sich nicht alle potentiellen Fehlschläge und Probleme vor-
aussehen und verhindern lassen, so können Sie trotzdem dafür sorgen, dass Ihr
Server und Ihre Sites mit allerhöchster Effizienz arbeiten, indem Sie die Adminis-
trationsaufgaben ausführen, die in diesem Kapitel beschrieben werden.
Die Administration ist bei IIS 4.0 und 5.0 von noch größerer Wichtigkeit, denn
diese Webplattformen können mehrere virtuelle FTP- und Websites hosten. Es ist
vergleichsweise einfach, einen Server zu überwachen und zu betreiben, auf dem
genau eine Website mit einer IP-Adresse und einem Domänennamen vorhanden
ist. Diese Aufgabe wird jedoch sehr zeitaufwändig und kompliziert, sobald Sie
anfangen, virtuelle Websites hinzuzufügen.
Es sind beim Hosting mehrerer Sites auf einem IIS 5.0-Server drei Szenarios
denkbar. Das erste ist die Verwendung mehrerer Anschlüsse. Mit dem Internet-
dienst-Manager können Sie einer zweiten Site einen anderen als den
Standardanschluss 80 zuweisen, d.h. diese Site wird dann als von der ersten
unterschiedliche Site betrieben. Beachten Sie jedoch, dass in diesem Zusammen-
hang alle Clients wissen müssen, dass die Alternativsite über diesen zweiten
Anschluss zu erreichen ist, denn standardmäßig sind alle Browser auf den
Anschluss 80 eingestellt.
Die zweite Möglichkeit, mehrere Sites auf einen Server zu legen, besteht darin,
mehreren Netzwerkkarten unterschiedliche IP-Adressen zuzuweisen. Bei dieser
Methode geht dem Server aber ziemlich schnell die Luft aus, da für die Konfigu-
ration eine Menge Ressourcen benötigt werden.
Bleibt eine dritte Methode, die bei IIS 5.0 neu ist und tatsächlich die beste Lösung
darstellt. Sie können nämlich jetzt mit mehreren IP-Adressen und Domänenna-
men eine einzige Netzwerkkarte ansprechen, indem Sie Hostheadernamen ver-
wenden. Diese Methode fußt darauf, dass IIS die notwendige Auswahl unter den
vorhandenen Websites basierend auf den Daten vornimmt, die ihm im Header
übergeben wurden und den gewünschten Host anzeigen.
Hinweis
Wenn Sie diese letztgenannte Methode verwenden wollen, um mehrere
Sites im Internet (statt in einem Intranet) zur Verfügung zu stellen, dann
müssen Sie die entsprechenden Domänennamen in jedem Fall zuvor bei
einer Registrierungsstelle (InterNIC für internationale Domänen, DeNIC
für .de-Domänen) eintragen zu lassen.
Kapitel 3 • Administration von Websites und FTP-Sites 59
Nun könnten Sie fragen: »Wie kann das Hosting mehrerer Websites auf einem
einzelnen Server die Administrierung denn erleichtern?« Die Antwort liegt in der
wunderbaren Idee der Delegierung. Wenn Sie mehrere Sites in einem Intranet
haben – etwa für jede Abteilung eines Unternehmens –, dann können Sie die War-
tung einer Site einem Mitglied der jeweiligen Abteilung übertragen.
Jede Website, die derart konfiguriert ist, verhält sich so, als wäre sie völlig allein
auf dem Server.
Warnung
An dieser Stelle zwei Mahnungen: Erstens können Sie die Methode mit
dem Hostheader nicht für mehrere Sites verwenden, die SSL nutzen,
denn die Daten werden ja verschlüsselt. Zweitens müssen Sie bedenken,
dass ältere Browser Hostheadernamen nicht auf diese Weise unterstüt-
zen; die Clients müssen den Internet Explorer 3.0 bzw. Netscape 2.0
oder höher verwenden.
Wie bereits mehrfach erwähnt, bearbeiten Sie die Einstellungen von IIS 5.0 und
der zugehörigen Komponenten bevorzugt mit dem Internetdienste-Manager.
Abbildung 3.1 zeigt einen Screenshot dieses Snap-Ins, das in der MMC ausge-
führt wird.
Abb. 3.1: Der Internetdienste-Manager wird nun als MMC-Snap-In ausgeführt und
dient in erster Linie der IIS-Administration
60 Sites starten und beenden
Abb. 3.2: Die von Kassetten- und Videorecordern her bekannten Schaltflächen
oben rechts in der Werkzeugleiste erlauben Ihnen das Starten, Beenden
und Anhalten von Diensten
Wenn Sie die Pausenschaltfläche anklicken (dies ist die Schaltfläche mit den bei-
den senkrechten Strichen), wird eine gestartete Site angehalten; in diesem Fall
nimmt der IIS keine neuen Verbindungen zum Dienst mehr an, vorhandene Ver-
bindungen werden jedoch aufrecht erhalten.
Die zweite Möglichkeit, Sites zu starten, zu beenden oder anzuhalten, ist die Ver-
wendung des Applets DIENSTE. Sie finden dieses Applet in der Systemsteuerung
unter VERWALTUNG (siehe Abbildung 3.3).
Wenn Sie das Applet ausführen, erscheint ein Fenster ähnlich dem in Abbildung
3.4 gezeigten. In diesem Fenster wurde der WWW-Publishingdienst selektiert. Im
rechten Fensterbereich werden der STATUS des Dienstes und der AUTOSTARTTYP
angezeigt.
In der Spalte STATUS wird angezeigt, ob ein Dienst ausgeführt wird (Gestartet),
oder ob er beendet oder angehalten ist. In der Spalte AUTOSTARTTYP finden Sie
Informationen darüber, wie mit dem Dienst beim Start des Betriebssystems ver-
fahren wird; hier gibt es drei Möglichkeiten, nämlich Automatisch, Manuell oder
Deaktiviert.
62 Sites starten und beenden
Abb. 3.3: Sie finden das Applet DIENSTE in der Systemsteuerung unter VERWALTUNG.
Mit diesem Applet können Sie die auf Ihrem Server installierten Dienste
verwalten.
• Automatisch. Der Dienst wird bei jedem Start des Betriebssystems ohne wei-
teres Zutun gestartet. Diese Einstellung ist ideal, wenn Sie auf Ihrem Server ei-
nen automatischen Neustart beim Auftreten von Kernelmodusunterbrechungen
(alias »Blue Screen of Death«) konfiguriert haben. Wenn nun ein solcher Feh-
ler auftritt und Ihr Server neu startet, dann wird auch Ihr WWW-Dienst neu ge-
startet, sofern für ihn die Einstellung Automatisch vorgenommen wurde. Ihre
Webseiten stehen anschließend sofort wieder bereit, ohne dass Sie etwas dafür
tun müssten.
• Manuell. Der Dienst muss manuell gestartet werden – etwa über ein Skript
oder durch den Administrator. Alle hier aufgezählten Methoden können dazu
verwendet werden.
• Deaktiviert. Der Dienst kann durch nichts und niemanden gestartet werden –
weder durch ein Skript noch von einer Anwendung. Nun, das ist natürlich et-
was irreführend, denn natürlich ist es nicht so, dass ein Dienst, wenn Sie ihn
einmal deaktiviert haben, niemals mehr gestartet werden könnte; Sie müssen
vielmehr nur einen der Autostarttypen Automatisch oder Manuell einstellen –
das war's schon.
Kapitel 3 • Administration von Websites und FTP-Sites 63
Abb. 3.4: Das Applet DIENSTE wird in einer der MMC ähnlichen Konsole ausgeführt.
Hier haben Sie weitergehende Kontrolle über die Dienste auf Ihrem
Computer.
Sie werden bei genauem Hinsehen feststellen, dass in Abbildung 3.4 eine zusätz-
liche Schaltfläche abgebildet ist, die im Internetdienste-Manager nicht vorhanden
war. Die ganz rechts in der Werkzeugleiste neben der Pausenschaltfläche ange-
zeigte Schaltfläche ist die Neustartschaltfläche. Wenn Sie diese Schaltfläche
anklicken, dann führen Sie einen Vorgang aus, bei dem der gewählte Dienst ange-
halten und sofort wieder gestartet wird. Dies ist ideal in Situationen, in denen Sie
eine Änderung an einem Dienst vorgenommen haben, die einen Neustart erforder-
lich macht. Ein Beispiel hierfür wäre das Hinzufügen oder Entfernen eines Web-
site-Operators.
Der dritte Ansatz für die Ausführung von Diensten ist der Aufruf der Dienstliste
über die Befehlszeile. IIS unterstützt hierzu insgesamt neun Befehle:
• stopsrv hält den Server oder die in einer Liste spezifizierten Server an.
• pausesrv unterbricht den Server oder die in einer Liste spezifizierten Server.
Jeder diese Befehle kann auch über einen Remotecomputer oder – mit Hilfe des
Befehls net – über das Netzwerk ausgeführt werden. Diese Befehle werden hier
nur kurz erwähnt, da Syntax und Verwendung ausführlich in Kapitel 13 erläutert
werden.
Hinweis
Wenn Sie eine Website mit Clustering betreiben, dann müssen Sie die
Clusterverwaltung für das Starten und Stoppen der Clustersites verwen-
den. Weitere Informationen hierzu finden Sie in Kapitel 12.
Wählen Sie aus dem Menü VORGANG den Eintrag NEU/WEBSITE. Nun wird der
ASSISTENT FÜR NEUE WEBSITE gestartet. Klicken Sie bei Anzeige des Einfüh-
rungsbildschirms auf WEITER.
Im ersten Dialogfeld (Abbildung 3.6) werden Sie darum gebeten, eine Beschrei-
bung für die Site einzugeben. Diese Beschreibung zeigt Ihnen oder auch anderen
Administratoren immer, um welche Website es sich handelt; sie wird im linken
Fensterbereich angezeigt. Geben Sie hier irgendetwas ein, was mit dem Zweck
der Site oder ihrem Inhalt in Zusammenhang steht, und klicken Sie dann auf die
Schaltfläche WEITER.
Nun wird das Dialogfeld zur Eingabe von IP-Adresse und Anschlusseinstellungen
aufgerufen. Im in Abbildung 3.7 gezeigten Fenster habe ich die IP-Adresse mei-
nes Servers 192.168.5.1 angegeben, den Anschluss 80 belassen und den Hosthea-
dernamen Marketing spezifiziert.
In Abbildung 3.8 beispielsweise musste ich in die Adressleiste meines Browsers
nur die Adresse http://Marketing eingeben und IIS wusste sofort, wohin meine
Anfrage geleitet werden musste. Dies liegt an dem in Abbildung 3.7 definierten
Hostheadernamen.
66 Sites hinzufügen
Abb. 3.6: Das Dialogfeld BESCHREIBUNG DER WEBSITE, in dem Sie eine Beschreibung
eingeben müssen
Abb. 3.7: Im Dialogfeld IP-ADRESSE UND ANSCHLUSSEINSTELLUNGEN geben Sie die IP-
Adresse und die Anschlusseinstellungen der Website ein, die Sie erstellen;
für virtuelle Sites wird außerdem ein Hostheadername angegeben
Kapitel 3 • Administration von Websites und FTP-Sites 67
Abb. 3.8: Sie können über IIS 5.0 virtuelle Websites direkt mit Hilfe des
Hostheadernamens (statt eines Bandwurm-URLs) aufrufen
Hinweis
Damit dies funktioniert, müssen Sie die Hostheaderdaten in Ihre DNS-
Servereinstellungen oder Ihre hosts-Datei eintragen. Beispielsweise lautet
der Eintrag, den ich in meiner hosts-Datei vorgenommen habe, wie folgt:
Klicken Sie nun im Fenster IP-ADRESSE UND ANSCHLUSSEINSTELLUNGEN auf
WEITER, um zum Dialogfeld BASISVERZEICHNIS DER WEBSITE zu gelangen.
Geben Sie den Pfad ein oder klicken Sie auf die Schaltfläche DURCHSUCHEN, um
das Verzeichnis anzugeben, in dem die Website vorhanden sein soll (dies ist das
Verzeichnis, das Sie anfangs erstellt haben). Lassen Sie das Kontrollkästchen
ANONYMEN ZUGRIFF AUF DIESE WEBSITE ZULASSEN markiert, falls Sie anony-
men Zugriff gestatten wollen, oder demarkieren Sie es, wenn Sie später
bestimmte Benutzer festlegen wollen. Klicken Sie auf die Schaltfläche WEITER.
Nun wird das Dialogfeld ZUGRIFFSBERECHTIGUNGEN FÜR DIE WEBSITE (Abbil-
dung 3.9) aufgerufen. Hier können sie die Berechtigungen für Clients einstellen,
die auf die Site zugreifen. Möglich sind die folgenden Berechtigungen:
• Lesen. Ermöglicht es Clients, die Seiten der Site zu betrachten.
• Skripts ausführen (z.B. ASP). Ermöglicht es Clients, Seiten anzufordern, die
ASP-Code enthalten, und diesen Code dann ausführen zu lassen.
68 Sites hinzufügen
Abb. 3.9: Das Dialogfeld ZUGRIFFSBERECHTIGUNGEN FÜR DIE WEBSITE dient zur
Anzeige und Einstellung der Berechtigungen, die Sie der Website
zuweisen wollen
Wenn Sie Ihre Auswahl vorgenommen haben, klicken Sie auf die Schaltfläche
WEITER, um zur letzten Seite des Assistenten zu gelangen. Klicken Sie hier auf
die Schaltfläche FERTIG STELLEN.
Sie haben nun eine neue Website auf Ihrem Server abgelegt. Jetzt müssen Sie nur
noch die zugehörigen Inhalte erstellen.
FTP-Sites werden auf ähnliche Weise erstellt. Es gibt natürlich Unterschiede zwi-
schen den beiden Sitetypen: Sie müssen beispielsweise für eine FTP-Site eine
Verzeichnisstruktur erstellen, was mit dem Windows-Explorer erledigt werden
kann.
Wenn Sie im ASSISTENTEN ZUR FTP-SITE-ERSTELLUNG eine neue Site hinzufü-
gen wollen, werden Sie aufgefordert, einen beschreibenden Namen für die FTP-
Site einzugeben und eine IP-Adresse, die Anschlussnummer und ein Basisver-
zeichnis auszuwählen. Der Assistent fordert Sie ferner zur Eintragung von
Kapitel 3 • Administration von Websites und FTP-Sites 69
Zugriffsberechtigungen für das Basisverzeichnis auf – hier können Sie Lesen und/
oder Schreiben angeben.
Nachdem Sie dem Assistenten alle notwendigen Informationen gegeben haben,
wird die FTP-Site erstellt und in der MMC-Konsole angezeigt. Sie können die
Site anschließend konfigurieren.
Warnung
Bedenken Sie, dass viele alte Browser keine Meldungen anzeigen kön-
nen, die länger als eine Zeile sind.
IIS 5.0 gestattet Ihnen auch die Eingabe einer Meldung, die bei der Abmeldung
des Benutzers von der FTP-Site angezeigt wird; eine weitere Meldung kann ange-
zeigt werden, wenn die maximale Anzahl an Verbindungen erreicht wurde.
Um die Meldungen einzugeben, klicken Sie mit der rechten Maustaste auf die
entsprechende FTP-Site in der MMC-Konsole und wählen den Menüeintrag
EIGENSCHAFTEN. Aktivieren Sie anschließend die Registerkarte MELDUNGEN
(Abbildung 3.10).
In Abbildung 3.10 habe ich den Text eingegeben, der jedem Benutzer, der sich
mit meinem FTP-Server verbindet, angezeigt wird. In Abbildung 3.11 ist darge-
stellt, was der Benutzer bei erfolgter Verbindung zu sehen bekommt.
70 FTP-Verzeichnisse, Meldungen und Ausgabeformate
Abb. 3.11: Der Begrüßungstext wird angezeigt, wenn ein Benutzer sich erfolgreich
authentifiziert hat und auf die FTP-Site zugreifen kann
Kapitel 3 • Administration von Websites und FTP-Sites 71
Sie können das Ausgabeformat festlegen, das ein Benutzer zu sehen bekommt,
wenn er ein Verzeichnislisting anfordert. Wenn der Clientcomputer den Befehl list
an den Server sendet, antwortet dieser mit einer Inhaltsauflistung des gegenwärti-
gen Arbeitsverzeichnisses. Mit IIS können Sie festlegen, wie dieses Listing ange-
zeigt wird – entweder im MS-DOS- oder im UNIX-Format. Abbildung 3.12 zeigt
die MS-DOS-Ausgabe, Abbildung 3.13 das UNIX-Äquivalent.
Abb. 3.13: IIS 5.0 kann das Arbeitsverzeichnis auch im UNIX-Format darstellen
72 Websites benennen
Hinweis
Da Microsofts Webtechnologien praktisch permanent Angriffen von
Hackern ausgesetzt sind, sollte Ihnen jedes Mittel recht sein, um solche
Attacken abzuwehren. Zugegeben: Es gibt ein paar Hacker, die ihr
»Handwerk« verstehen und auf sehr raffinierte Weise in Ihre FTP-Site
eindringen können; aber Sie sollten ihnen das Leben nicht zu leicht
machen. Die Verwendung des UNIX-Formats an dieser Stelle kann einige
Hacker abwehren, weil der Header des Microsoft FTP-Dienstes bei der
Anmeldung nicht angezeigt wird und sie nur das UNIX-Listing sehen.
Dies könnte sie zu der Annahme verleiten, dass sie es mit einem UNIX-
oder Linux-Server zu tun haben.
Es gibt noch ein paar letzte Punkte anzumerken, bevor wir diesen Abschnitt
abschließen. Wenn Sie die MS-DOS-Ausgabe verwenden, werden die Jahreszah-
len nur zweistellig formatiert; im UNIX-Format werden hingegen vierstellige
Jahreszahlen verwendet. Sie können die Standardeinstellung für das Anzeigefor-
mat durch Aktivierung der Eigenschaft FtpDirBrowseShowLongDate metabase
ändern.
In Anhang B finden Sie weitere Informationen dazu, wie Sie diese Eigenschaft
mit dem Objekt IIsFtpServer ändern.
Abb. 3.14: Der markierte Eintrag zeigt die Beschreibung »Website für die
Marketingabteilung«
Hinweis
Bedenken Sie immer, dass ältere Browser keine Hostheadernamen unter-
stützen. IIS schickt diese Browser dann zur Standardwebsite, sofern eine
solche eingerichtet ist. Aufgrund dessen sollten Sie immer eine Standard-
site konfigurieren, die Informationen dazu anzeigt, warum ein Client auf
diese Standardsite umgeleitet wurde.
Warnung
Da der Domänenname im SSL-Zertifikat spezifiziert wird, können Sie
einer IP-Adresse nur einen Hostheadernamen zuweisen. Es gibt die Mög-
lichkeit, diese Einschränkung zu umgehen, indem Sie mehrere Zertifi-
kate, IP-Adressen und Anschlüsse für jede Website einrichten.
Wenn Sie einen IIS-Neustart durchführen müssen, empfehle ich Ihnen die aus-
schließliche Verwendung der MMC-Konsole. Sie wählen im linken Fensterbe-
reich den zu beendenden Dienst (Web-, FTP-, SMTP- oder NNTP-Dienst) aus
und klicken auf die Stoppschaltfläche in der Werkzeugleiste; danach klicken Sie
auf die Startschaltfläche, um den Dienst wieder zu starten.
Alternativ können Sie den gesamten IIS-Dienst neu starten, indem Sie das Com-
putersymbol im linken Fensterbereich wählen und dann aus dem Menü VORGANG
den Eintrag ISS ERNEUT STARTEN selektieren. Dadurch wird das Fenster BEEN-
DEN/STARTEN/HERUNTERFAHREN (Abbildung 3.16) aufgerufen.
Wie Sie der Liste in Abbildung 3.16 entnehmen können, lassen sich die Internet-
dienste auf dem Computer starten, beenden oder neu starten; Sie können ferner
auch den Server selbst neu starten. Wählen Sie die gewünschte Option und kli-
cken Sie auf die Schaltfläche OK.
Hinweis
Wenn Sie den IIS beenden, werden gleichzeitig auch ein paar andere
Dienste beendet. Die Prozesse Drwtsn32.exe, Mtx.exe und Dllhost.exe
werden, soweit aktiv, beendet. Sie alle werden beim IIS-Neustart eben-
falls neu gestartet.
Hinweis
IIS kann durch Verwendung des Internetdienste-Managers (HTML) nicht
neu gestartet werden. Bei diesem Dienst handelt es sich um ein web-
basiertes Administrationsprogramm, das in Kapitel 15 näher erläutert
werden wird.
76 IIS erneut starten
Wenn Sie den IIS-Neustart planen oder in eine benutzerdefinierte oder eine Drit-
tanbieteranwendung integrieren müssen, dann können Sie die Befehlszeilenver-
sion des IIS-Neustarts benutzen. Syntax und Verwendung sind im folgenden
Abschnitt erläutert.
Syntax:
iisreset [computername]
computername ist der Name des Servers, auf dem IIS ausgeführt wird.
Die folgenden optionalen Parameter sind vorhanden:
• /restart beendet alle Internetdienste und startet sie dann neu.
• /rebootonerror startet den Server neu, wenn während des Starts, der Beendi-
gung oder eines Neustarts der Internetdienste ein Fehler auftritt.
• /noforce sorgt dafür, dass die Beendigung eines Dienstes nicht erzwungen
wird, wenn die normale Beendigung fehlschlägt.
• /timeout:<wert> stellt ein Zeitlimit (in Sekunden) für die erfolgreiche Beendi-
gung eines Dienstes ein. Wenn dieses Limit überschritten wird und die Option
/rebootonerror ebenfalls verwendet wurde, dann wird der Computer neu ge-
startet. Die Standardeinstellungen betragen für einen Neustart 20 Sekunden,
für die Beendigung 60 Sekunden und für einen Computerneustart 0 Sekunden.
• /status zeigt den Status der Internetdienste an.
Abbildung 3.17 zeigt ein Beispiel für die Verwendung des Befehls iisreset mit
der Option /status.
Kapitel 3 • Administration von Websites und FTP-Sites 77
Abb. 3.17: Die Eingabeaufforderung mit dem Befehl iisreset und der Option /
status auf dem Rechner computer. Beachten Sie, dass nur Dienste
angezeigt werden, nicht jedoch einzelne Sites.
Abb. 3.18: Das Dialogfeld EIGENSCHAFTEN des IIS-Servers. Hier können Sie
Standardeinstellungen für Web- und FTP-Sites anpassen.
Hinweis
Alle Änderungen, die Sie auf diese Weise an einzelnen Sites vornehmen,
haben Vorrang vor den entsprechenden Haupteigenschaften, die überge-
ordnet für die Site gelten würden.
2. Wählen Sie den Namen der Sicherungsdatei und klicken Sie auf WIEDERHER-
STELLEN. Nun wird eine Fehlermeldung angezeigt, dass der Wiederherstel-
lungsvorgang fehlgeschlagen sei; trotzdem wird ein Teil der Konfiguration
wiederhergestellt.
3. Öffnen Sie die Eingabeaufforderung und geben Sie die folgende Befehlszeile
ein:
cscript.exe x:\InetPub\AdminScripts\Adsutil.vbs enum w3svc
Ersetzen Sie x durch den Buchstaben des Laufwerks, auf dem IIS installiert
ist.
4. Suchen Sie in der sehr umfassenden Liste die Einträge WAMUserName und
WAMUserPass und notieren Sie deren Werte.
5. Öffnen Sie die Computerverwaltung (unter START/PROGRAMME/VERWAL-
TUNG).
Warnung
Wenn Ihr Server als Domänencontroller betrieben wird (was in einer
Produktionsumgebung aus Sicherheitsgründen eigentlich nicht der Fall
sein sollte), dann können Sie das vom Skript zurückgegebene Kennwort
nicht lesen, da es mit Sternchen dargestellt wird (*********).
Hinweis
Damit Sie Schritt 3 der obigen Schrittanleitung ausführen können, muss
der Windows Script Host installiert sein.
Hinweis
Sie können Ihre Konfiguration mit dem Internetdienste-Manager (HTML)
zwar sichern, nicht aber wiederherstellen.
82 Konten für Website-Operatoren
Abb. 3.20: Das Dialogfeld BENUTZER ODER GRUPPEN AUSWÄHLEN. Hier legen Sie fest,
welche Benutzer oder Gruppen Website-Operatoren werden.
Wählen Sie den oder die gewünschten Benutzer oder Gruppe(n) aus, und klicken
Sie dann nacheinander auf die Schaltflächen HINZUFÜGEN und OK. Dadurch
werden die notwendigen Benutzer- oder Gruppenkonten der Liste der Website-
Operatoren hinzugefügt.
Kapitel 3 • Administration von Websites und FTP-Sites 83
Tipp
Wie immer bei der Vergabe von Rechten unter Windows NT oder 2000
ist es auch hier sinnvoll, zuerst eine Gruppe für den gewünschten Zweck
zu erstellen und dieser dann Einzelkonten hinzuzufügen. Dadurch wird
die Administration wesentlich erleichtert.
Sie können ein Operatorkonto oder eine Gruppe auf der Registerkarte OPERATO-
REN des Dialogfelds EIGENSCHAFTEN auch entfernen. Wählen Sie einfach den
oder die Benutzer oder Gruppe(n) aus und klicken Sie auf die Schaltfläche ENT-
FERNEN.
3.12 Fazit
In diesem Kapitel haben wir eine Reihe von Möglichkeiten und Vorgehensweisen
zur Administration Ihrer Web- und FTP-Sites vorgestellt. Es gibt eine Reihe von
Ansätzen zur Lösung von Administrationsproblemen, die bei der täglichen Arbeit
mit IIS auftreten können; es bleibt Ihnen überlassen, diejenigen auszuwählen, die
Ihnen am geeignetsten erscheinen.
84 Fazit
Abb. 3.21: Im Abschnitt IIS 3.0-VERWALTUNG der Registerkarte DIENST können Sie
die Web- oder FTP-Site auswählen, die Sie über IIS 3.0 administrieren
wollen
Zu IIS 5.0 gehört der SMTP-Dienst, der Ihrem Server den Versand und Empfang
von Mails ermöglicht. Ferner ist mit dem NNTP-Dienst die Einrichtung interner
Diskussionsgruppen möglich.
Abb. 4.1: Der auf meinem Computer installierte VIRTUELLE STANDARDSERVER FÜR
SMTP listet die Domänen und die aktuellen Sitzungen auf, die derzeit
konfiguriert sind und ausgeführt werden
4.1.3 Mailverarbeitung
Der SMTP-Dienst stellt Mails entsprechend der RFCs 821 und 822 zu. Die Aus-
lieferung erfolgt zwischen den Remote-Mailservern und dem Verzeichnis Drop.
Wenn der SMTP-Dienst eine Mail erhält – wahlweise über den TCP-
Anschluss 25 oder durch Kopieren einer Datei in den Ordner Pickup –, dann wird
diese Mail im Verzeichnis Queue abgelegt und die Zieladresse wird überprüft.
Handelt es sich um einen lokalen Adressaten, dann wird die Mail direkt ausgelie-
fert, andernfalls wird sie für die Fernzustellung verarbeitet.
Hat SMTP eine lokale Auslieferung festgestellt, dann wird die Mail aus dem Ver-
zeichnis Queue in das Verzeichnis Drop verschoben. Damit ist der eigentliche
Übertragungsvorgang abgeschlossen.
Bei der Remotezustellung wird ein etwas anderer Vorgang ausgeführt. Die für die
Übertragung bestimmten Mails werden im Ordner Queue belassen und nach
Domänen sortiert. Auf diese Weise lassen sich ggf. mehrere Mails stapeln und
dann in einem Rutsch ausliefern, wodurch die Verbindung optimal genutzt wird.
Bevor der SMTP-Dienst die Mails an einen Remoteserver ausliefert, wird über-
prüft, ob der Server überhaupt online und zum Empfang von Mails bereit ist. Ist
der Server offline, dann speichert SMTP die Mails im Verzeichnis Queue und pro-
biert die Auslieferung in bestimmten Zeitabständen erneut. Wie diese Zeitab-
stände eingestellt werden, wird an anderer Stelle in diesem Kapitel beschrieben,
wenn es um die Einstellung der SMTP-Parameter geht.
Wenn eine Verbindung hergestellt wurde, verschickt der SMTP-Dienst die Mails
und wartet auf eine Bestätigung vom Empfangsserver, bevor er den Vorgang als
abgeschlossen betrachtet. Wenn Sie für die Remotezustellung TLS aktiviert
haben, dann verschlüsselt der SMTP-Dienst die ausgehenden Mails.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 89
Abb. 4.2: Das Applet KOMPONENTENDIENSTE ermöglicht Ihnen das Starten, Beenden,
Anhalten und Neustarten des SMTP-Dienstes
In der Mitte des Dialogfeldes befindet sich das Listenfeld STARTTYP. Hier können
Sie zwischen drei Optionen wählen, nämlich Automatisch, Manuell und Deakti-
viert.
Die Einstellung Automatisch bewirkt, dass der SMTP-Dienst beim Hochfahren
von Windows 2000 gestartet wird. Wählen Sie die Einstellung Manuell, dann
müssen Sie den Dienst selbst wie oben beschrieben starten. Bei der Auswahl von
Deaktiviert kann der Dienst solange nicht gestartet werden, bis Sie in diesem Dia-
logfeld wieder eine der beiden anderen Optionen Automatisch oder Manuell
selektiert haben.
Tipp
Wenn Sie bei dem Versuch, den virtuellen SMTP-Server über die MMC
zu starten, die in Abbildung 4.4 gezeigte Fehlermeldung erhalten, dann
wissen Sie, dass der SMTP-Dienst deaktiviert wurde.
Tipp
Wenn Sie einen neuen virtuellen Server einrichten, dann werden Sie zur
Eingabe eines Basisverzeichnisses aufgefordert. Dieses Verzeichnis müs-
sen Sie erstellen, bevor Sie die Erstellung des Servers starten.
Wenn Sie ein Verzeichnis für den neuen virtuellen Server erstellt haben, gehen
Sie wie folgt vor:
1. Wenn Sie für den neuen virtuellen Server eine neue IP-Adresse verwenden,
konfigurieren Sie diese zunächst unter NETZWERK- UND DFÜ-VERBINDUN-
GEN. In der Windows 2000-Dokumentation finden Sie Informationen zur Vor-
gehensweise.
92 Arbeiten mit dem virtuellen Server für SMTP
In diesem Dialogfeld können Sie ein Limit für eingehende Verbindungen setzen.
Wenn Sie das Kontrollkästchen VERBINDUNGEN BESCHRÄNKEN AUF nicht mar-
kieren, dann ermöglichen Sie eine unbegrenzte Anzahl von Verbindungen. Stan-
dardmäßig sind eingehende Verbindungen nicht begrenzt.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 93
Abb. 4.5: Der neue virtuelle SMTP-Server mit der ihm zugewiesenen Domäne wird
in der MMC angezeigt
Durch Markieren des Kontrollkästchens können Sie die Anzahl der Verbindungen
begrenzen, wobei Sie zumindest den Wert 1 angeben müssen (Standard: 1000).
Sie können ferner auch ein ZEITLIMIT (in Minuten) festsetzen, nach dessen
Ablauf SMTP inaktive Verbindungen beendet. Standardmäßig sind 10 Minuten
vorgesehen.
Im gleichen Dialogfeld konfigurieren Sie auch die ausgehenden Verbindungen.
Begrenzungen setzen Sie gegebenenfalls durch Markieren der entsprechenden
Kontrollkästchen im Abschnitt AUSGEHEND. Standardmäßig sind maximal
1.000 gleichzeitige Verbindungen vorgesehen; dieser Wert lässt sich beliebig
ändern.
Tipp
Sie können die Serverleistung verbessern, indem Sie auf der Registerkarte
NACHRICHTEN des Fensters EIGENSCHAFTEN die Anzahl der ausgehenden
Nachrichten gleichermaßen einschränken.
Sie können auch für ausgehende Verbindungen ein ZEITLIMIT setzen, nach dessen
Ablauf SMTP inaktive Verbindungen beendet (Standard: 10 Minuten). Außerdem
lässt sich die Anzahl ausgehender Verbindungen pro Domäne einschränken. Wie
in Abbildung 4.7 gezeigt, sind hier 100 Verbindungen Standard.
94 Arbeiten mit dem virtuellen Server für SMTP
Beachten Sie, dass die hier eingestellte Anzahl unterhalb des Wertes liegen muss,
der unter VERBINDUNGEN BESCHRÄNKEN AUF gewählt wurde, da sonst Verbin-
dungen zurückgewiesen werden könnten.
Die Einstellung TCP-ANSCHLUSS ermöglicht die Festlegung eines Ausgangsan-
schlusses für SMTP. Standardmäßig ist der gleiche Anschluss gewählt wie für die
eingehenden Daten (nämlich 25). Sie können die Anschlussnummer natürlich
beliebig ändern, wobei Sie notwendigerweise die auf Servern häufig benutzten
Anschlüsse wie etwa 80 oder 119 beachten müssen. Empfohlen wird die Eingabe
einer Anschlussnummer größer 1000, denn dadurch wird die Möglichkeit von
Anschlusskonflikten oder der Fehlleitung eines Clients an eine falsche Anwen-
dung vermindert.
Wie können Sie nun bestimmen, welche Grenzen im Dialogfeld VERBINDUNGEN
eingestellt werden sollen? Eine mögliche Vorgehensweise besteht darin, vor Auf-
bau oder Annahme von Verbindungen eine Grundmessung vorzunehmen. Stellen
Sie die Standardwerte (1000) ein und erstellen Sie ein Mailskript oder ein Makro,
um mehrere Mails an Ihren Server zu senden.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 95
Abb. 4.7: Das Dialogfeld VERBINDUNGEN, in dem Sie ein- und ausgehende
Verbindungen beschränken können
Beobachten Sie die Serverleistung, während der Server mit den Verbindungen
arbeitet, und stellen Sie fest, wann und wie Einbußen auftreten. Erhöhen Sie dann
die Einstellungen so oft, bis die Serverleistung nicht mehr akzeptabel ist.
Protokollierung
Die Protokollierung ermöglicht Ihnen die Überprüfung aller Befehle, die von den
Clients, die eine Verbindung mit Ihrem SMTP-Server hergestellt haben, an diesen
gesendet wurden. Sie können die Protokolle in einem von vier Formaten spei-
chern:
• W3C-erweitert. Benutzerdefinierbares ASCII-Textformat (Standard).
• Microsoft IIS. Nicht änderbares ASCII-Protokollformat.
• NCSA allgemein. ASCII-Textformat, kombiniert mit dem NCSA-Format
(National Centre for Supercomputing Applications).
• ODBC. Festgelegtes Format, welches in eine ODBC-kompatible Datenbank
(z.B. SQL Server) protokolliert.
Von den genannten weist das Format W3C-erweitert die meisten Konfigurations-
optionen auf. Sie können hiermit, wie Sie gleich sehen werden, verschiedene Ele-
mente überwachen. Ferner soll hier festgehalten werden, dass das ASCII-Format
das schnellste der aufgelisteten Protokollformate ist – dies sollte in Zusammen-
hang mit der Serverleistung beachtet werden. Trotzdem ist es nicht unkomforta-
bel, denn ASCII ist sicher das am leichtesten zu be- und verarbeitende Format.
96 Arbeiten mit dem virtuellen Server für SMTP
Warnung
Sie müssen bei der Konfiguration Ihrer Protokolldatei Folgendes beach-
ten: Wenn Sie die von IIS eingerichteten Standardnamen verwenden,
werden die Protokolldaten für alle Dienste in einer einzigen Protokollda-
tei abgelegt. Aus diesem Grund sei empfohlen, für jeden Dienst, den Sie
einzeln protokollieren wollen, auch eine separate Protokolldatei anzule-
gen.
Abb. 4.8: Das Dialogfeld EIGENSCHAFTEN VON NEUER VIRTUELLER SMTP-SERVER mit
der Registerkarte ALLGEMEIN und einer Liste verfügbarer
Protokolldateiformate
Wenn Sie das Kontrollkästchen LOKALE ZEIT FÜR DATEIBENENNUNG UND ROLL-
OVER VERWENDEN markieren, dann wird statt der GMT-Zeit die lokale Zeit für
die Dateibenennung verwendet.
Sie können in diesem Dialogfeld auch das Verzeichnis ändern, in dem Ihre Proto-
kolldatei abgelegt wird. Geben Sie den Pfad in das Textfeld ein oder klicken Sie
auf die Schaltfläche DURCHSUCHEN, um das gewünschte Verzeichnis zu suchen.
Der Name der Protokolldatei wird unten im Fenster angezeigt.
Wählen Sie nun die zweite Registerkarte ERWEITERTE EIGENSCHAFTEN (Abbil-
dung 4.10) aus.
Abb. 4.10: Die Registerkarte ERWEITERTE EIGENSCHAFTEN ist nur vorhanden, wenn Sie
das Protokollformat W3C-ERWEITERT gewählt haben. Sie können hier
eine Vielzahl von Optionen zur Überwachung der Serververbindungen
selektieren.
Wie Sie sehen, lassen sich hier doch eine Reihe verschiedener Variablen hinsicht-
lich der Clients überwachen, die eine Verbindung mit dem Server herstellen.
Einige dieser Variablen – etwa Client-IP-Adresse, Datum und Uhrzeit – können
sehr hilfreich sein, wenn Beschwerden über Verbindungsprobleme aufkommen.
Eine letzte Information möchte ich Ihnen am Ende dieser Abhandlung über die
Protokollierung noch geben. Wenn Sie Ihre Protokolldateien mit dem ODBC-
Format erstellen, sieht das Dialogfeld EIGENSCHAFTEN etwas anders aus (Abbil-
dung 4.11).
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 99
Wie aus Abbildung 4.11 ersichtlich, habe ich die verschiedenen Optionen so ein-
gestellt, dass der SMTP-Server eine Verbindung zur ODBC-Datenquelle herstel-
len kann. In diesem Fall handelt es sich um eine SQL 7.0-Datenbank.
Der ODBC-DATENQUELLENNAME (DSN) ist eine Zeichenkette, die dem Server
mitteilt, wie der Name der Datenquelle lautet. Sie müssen, um diese Funktion ver-
wenden zu können, zunächst eine Datenbank erstellen und den zugehörigen DSN
dann im ODBC-Applet konfigurieren.
Die Variable TABELLE ist der Name der Tabelle innerhalb der Datenbank, in der
die Einträge gespeichert werden.
Wenn Sie eine Datenbank verwenden, die die Angabe eines Benutzernamens und
eines Kennworts erfordert (wie etwa SQL Server), dann können Sie diese Daten
in die entsprechenden Textfelder eingeben.
In diesem Buch werden Datenbankkonzepte nicht besprochen. Wenn Sie sich also
nicht sicher sind, wie diese Textfelder auszufüllen sind, dann wenden Sie sich an
Ihren Datenbankadministrator.
Sicherheit
Die Sicherheitseinstellungen für Ihren virtuellen Server nehmen Sie auf zwei
Registerkarten des Dialogfelds EIGENSCHAFTEN vor, nämlich ZUGRIFF und
SICHERHEIT. Mit den auf der Registerkarte ZUGRIFF verfügbaren Optionen kön-
nen Sie Parameter zur Zugriffssteuerung, Weitergabebeschränkungen, Verbin-
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 101
Tipp
Ich empfehle Ihnen, auf dem Domänencontroller eine Gruppe zu erstel-
len, die Sie dann an dieser Stelle selektieren. Der Gruppe können Sie
dann Benutzer hinzufügen, was die Administration erheblich verein-
facht.
102 Arbeiten mit dem virtuellen Server für SMTP
Die Registerkarte ZUGRIFF (Abbildung 4.13) verfügt über vier Abschnitte, die
Sicherheitsaspekte bezüglich der Serverkommunikation und der Verbindungen
betreffen.
Im ersten Abschnitt dreht sich alles um die Zugriffssteuerung und Authentifizie-
rung. Um diesen Abschnitt zu konfigurieren, klicken Sie auf die Schaltfläche
AUTHENTIFIZIERUNG. Die folgenden Optionen sind im dann angezeigten Dialog-
feld AUTHENTIFIZIERUNG verfügbar:
• Anonymer Zugriff. Markieren Sie diese Option, wenn Sie keine Authentifi-
zierung auf dem Server wünschen.
• Standardauthentifizierung. Diese Authentifizierung erfordert einen Benut-
zernamen und ein Kennwort, sendet diese aber unverschlüsselt. Sie können
zwecks Authentifizierung einen Domänennamen an den Kontennamen anhän-
gen. Ferner lässt sich eine Option TLS-VERSCHLÜSSELUNG ERFORDERLICH se-
lektieren, um die Verwendung von TLS zu erzwingen.
• Windows-Sicherheitspaket. Client und Server handeln die Verbindung aus
und verwenden zur Authentifizierung einen Windows-Kontennamen und ein
Windows-Kennwort.
Abb. 4.14: Im Dialogfeld VERBINDUNG können Sie den Zugriff auf Ihren Server auf
der Basis der anfordernden IP-Adresse oder sogar der Domäne gestatten
oder verweigern
Wie Sie sehen, habe ich allen Computern mit Ausnahme des Rechners mit der IP-
Adresse 207.164.55.254 den Zugriff gestattet. (Die IP-Adresse habe ich nur zu
Demonstrationszwecken gewählt und frei erfunden; machen Sie sich also keine
Sorgen, falls es sich zufällig um Ihre IP-Adresse handelt – ich habe wirklich
nichts gegen Sie!) Sie können über die Festlegung einer Netzwerk-IP-Adresse
oder durch Verwendung einer Subnetzmaske auch eine Gruppe von Computern
selektieren.
Der letzte Abschnitt der Registerkarte ZUGRIFF befasst sich mit der Verwendung
Ihres Servers als Weitergabeagent für E-Mails. Sie können Weitergabeeinschrän-
104 Arbeiten mit dem virtuellen Server für SMTP
kungen für Computer basierend auf deren IP- oder Subnetzadresse, der Maske
oder dem Domänennamen konfigurieren. Die Optionen gestatten die Auswahl
eines einzelnen Rechners oder einer Gruppe von Computern über Subnetzmaske
oder Domänennamen.
Warnung
Falls Sie sich nicht sicher sind, wie Sie mit den Weitergabeoptionen ver-
fahren sollen, dann verweigern Sie am besten jegliche Weitergabe.
Wenn Internetbenutzer feststellen, dass Ihr Server zur Weitergabe von
E-Mails in der Lage ist, dann kann es ganz schnell dazu kommen, dass
Sie mit Hass-Mails bombardiert und schlimmstenfalls sogar vor Gericht
zitiert werden, weil irgendjemand Ihren Server als Weitergabestation für
seine Spam-Mails verwendet hat.
Die von mir bisher beschriebenen Sicherheitsoptionen beziehen sich auf einge-
hende Nachrichten. Sie können solche Optionen aber auch für ausgehende Nach-
richten setzen. Klicken Sie zu diesem Zweck auf die Schaltfläche AUSGEHENDE
SICHERHEIT unten auf der Registerkarte ÜBERMITTLUNG (Abbildung 4.15).
Abb. 4.15: Wenn Sie auf die Schaltfläche AUSGEHENDE SICHERHEIT klicken, wird das
gleichnamige Dialogfeld aufgerufen, in dem Sie die
Sicherheitseinstellungen für ausgehende Nachrichten vornehmen
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 105
Die Sicherheitsoptionen für ausgehende Nachrichten sind mit denen für einge-
hende Nachrichten identisch, weswegen ich sie hier nicht noch einmal erläutern
werde. Es ist allerdings wichtig festzuhalten, dass diese Optionen sich sowohl auf
Nachrichten beziehen, die innerhalb Ihrer Organisation verfasst werden, als auch
auf Nachrichten externer Benutzer, deren Mails über Ihren Server weitergegeben
werden, sofern Sie die oben beschriebenen Weitergabeeigenschaften konfiguriert
haben.
Mails verwalten
In diesem Abschnitt geht es um die Verwaltung der Anzahl von Nachrichten, die
im Laufe einer Sitzung oder Verbindung zugestellt werden, außerdem um die
Begrenzung der Nachrichtengröße, die Anzahl der Empfänger und die Vorgehens-
weise bei Nichtzustellbarkeit. Diese Optionen werden auf der Registerkarte
NACHRICHTEN im Dialogfeld EIGENSCHAFTEN VON VIRTUELLER SMTP-SERVER
eingestellt.
Bei fast allen Produktionsservern ist die Serverleistung eine für den Administrator
wichtige Angelegenheit. Wenn Ihr SMTP-Server eine große Menge von Mails
über eine einzige Verbindung sendet, dann kann die Leistungsfähigkeit des Ser-
vers rapide sinken, und die Zustellung der Mails kann sich extrem verzögern.
Eine Möglichkeit, dieses Problem zu umgehen, besteht in der Begrenzung der
Anzahl von Nachrichten, die pro Verbindung gesendet werden können. Wenn Sie
diese Anzahl auf – sagen wir – 30 verringern und Ihr Server nun versucht,
120 Mails zu senden, dann tut er dies nicht in einem Rutsch; vielmehr sendet er
die ersten 30 Mails, baut dann für die nächsten 30 eine neue Verbindung auf, sen-
det diese usw., bis alle Nachrichten versandt sind.
Wenn Sie einen Anhaltspunkt für Ihr Limit benötigen, dann fügen Sie im System-
monitor den Indikator Gesendete Nachrichten/Sek für das Objekt SMTP Server
hinzu (siehe Abbildung 4.16).
Der Grenzwert sollte kleiner als der im Systemmonitor ermittelte Wert sein. Um
ihn einzustellen, öffnen Sie zunächst das Dialogfeld EIGENSCHAFTEN VON VIRTU-
ELLER SERVER FÜR SMTP und wählen die Registerkarte NACHRICHTEN. Hier
wählen Sie die Option ZAHL DER NACHRICHTEN PRO VERBINDUNG BESCHRÄN-
KEN AUF und legen den gewünschten Wert fest. Der Standardwert liegt bei 20,
maximal lässt sich eine Beschränkung auf 2.000.000.000 Nachrichten einstellen –
eine gigantische Menge für eine einzige Verbindung; wenn Sie wirklich so viele
Nachrichten versenden, dann sollten Sie in jedem Fall einen Cluster verwenden.
Als Nächstes können Sie die Größe der Nachrichten begrenzen. Geben Sie den
gewünschten Wert (in Kbyte) in das Textfeld NACHRICHTENGRÖSSE EINSCHRÄN-
KEN AUF ein. Versucht nun ein Client eine Nachricht zu versenden, die größer ist
als dieses Limit, dann wird ihm eine Fehlermeldung angezeigt. Die einzige Aus-
nahme liegt vor, wenn der Server den Befehl EHLO unterstützt; in diesem Fall
wird der Grenzwert vorab vom Server ermittelt, der danach gar nicht erst versu-
chen wird, eine Nachricht von unerlaubter Größe zu übermitteln.
106 Arbeiten mit dem virtuellen Server für SMTP
Sie können auch die Anzahl der gesendeten Daten pro Sitzung einschränken.
Markieren Sie das Kontrollkästchen SITZUNGSGRÖSSE EINSCHRÄNKEN AUF und
geben Sie einen Wert in das Textfeld ein. Dieser Wert ist die Summe aller wäh-
rend einer Sitzung gesendeten Nachrichten. Beachten Sie, dass sich der Wert nur
auf tatsächliche Nachricht und nicht auf die Anzahl der Empfänger bezieht.
Als Letztes können Sie die Anzahl der Empfänger pro Nachricht begrenzen.
Wählen Sie die Option ZAHL DER EMPFÄNGER PRO NACHRICHT BESCHRÄNKEN
AUF und geben Sie den gewünschten Wert in das Textfeld ein (Standard: 100).
Wenn der SMTP-Server eine Nachricht mit mehr als 100 Empfängern vorfindet,
baut er eine neue Verbindung auf und verarbeitet dann die übrigen Empfänger.
Der SMTP-Dienst erlaubt Ihnen auch die Speicherung unzustellbarer Mails auf
dem Server. Ein Unzustellbarkeitsbericht (Non-Delivery Report, NDR) wird im
von Ihnen im Dialogfeld EIGENSCHAFTEN spezifizierten Verzeichnis abgelegt. Es
handelt sich hierbei um eine Kopie des an den Absender geschickten Unzustell-
barkeitsberichts.
Der SMTP-Server wird solange versuchen, den Unzustellbarkeitsbericht zuzustel-
len, bis die festgelegte Maximalanzahl von Versuchen erreicht wird; danach legt
er den Bericht im von Ihnen gewählten Verzeichnis für unzustellbare Mails ab.
Dieses Verzeichnis legen Sie im Textfeld BADMAIL-VERZEICHNIS fest Standard:
x:\InetPub\mailroot\Badmail, wobei x: den Buchstaben des Laufwerks bezeich-
net, auf dem Sie IIS installiert haben.
Um die Zustellung von Nachrichten geht es auch auf der Registerkarte ÜBER-
MITTLUNG (Abbildung 4.17) des Dialogfelds EIGENSCHAFTEN. Die ersten vier
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 107
Optionen gestatten Ihnen die Einstellung des ersten, zweiten, dritten und aller
nachfolgenden Wiederholungsintervalle, d.h. der Zeitabstände, nach denen der
Server jeweils versucht, nicht zugestellte Mails erneut zu versenden.
Die Option BENACHRICHTIGUNG BEI VERZÖGERUNG legt fest, wann bei Nichtzu-
stellung eine entsprechende Benachrichtigung erfolgt – dies ist praktisch, wenn
netzwerkbedingte Verzögerungen zu berücksichtigen sind. Sie können hier einen
Wert zwischen einer Minute und 9.999 Tagen eingeben (Standard: 12 Stunden).
Die letzte Option bei den ausgehenden Nachrichten ist das ZEITLIMIT FÜR
ABLAUF. Wenn der SMTP-Dienst alle Zustellversuche erfolglos durchgeführt hat,
landen nach Ablauf des hier angegebenen Zeitraums nicht zugestellte Mails im
Verzeichnis Badmail. Wie auch bei der BENACHRICHTIGUNG BEI VERZÖGERUNG
können Sie hier einen Wert zwischen einer Minute und 9.999 Tagen eingeben.
Standardmäßig sind zwei Tage gewählt.
Unten auf der Registerkarte ÜBERMITTLUNG befindet sich der Abschnitt LOKAL.
Die beiden hier vorzufindenden Optionen funktionieren exakt so wie die darüber
liegenden Einstellungen für ausgehende Nachrichten, beziehen sich aber lediglich
auf lokale Verbindungen.
108 Arbeiten mit dem virtuellen Server für SMTP
Die erste Option in diesem Dialogfeld ist MAXIMALER HOP COUNT. Der Stan-
dardwert ist 15; er zeigt an, dass der SMTP-Server die Anzahl der Router über-
prüft, die eine Nachricht auf dem Weg zu ihrem Ziel passiert hat. Wenn die Nach-
richt mindestens so viele Router passiert wie hier angegeben, erhält der Absender
einen Unzustellbarkeitsbericht. Natürlich wird trotzdem versucht, die Nachricht
in den festgelegten Abständen erneut zuzustellen.
Die nächste Option ist die MASKERADENDOMÄNE. Der hier eingegebene Wert
wird im Feld From der Nachricht angezeigt und ersetzt den lokalen Domänenna-
men. Wofür das gut sein soll? Nun, wenn Sie in einer lokalen Domäne ohne voll-
ständig qualifizierten Domänennamen arbeiten, dann werden Sie feststellen, dass
es Internetprovider gibt, die die Annahme von Nachrichten aufgrund der Angaben
in den Feldern From bzw. Mailfrom des Nachrichtenheaders verweigern. Durch
Eingabe eines vollständig qualifizierten Domänennamens in das Feld MASKERA-
DENDOMÄNE können Sie dieses Problem umgehen.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 109
Warnung
Verwenden Sie diese Funktion nicht, um Humbug mit IP-Adressen oder
Domänennamen zu treiben.
Tipp
Wenn Sie die IP-Adresse des Smart Host in eckigen Klammern ([…]) ein-
geben, können Sie die Serverleistung verbessern, denn dann muss der
Server keinen DNS-Lookup für den Hostnamen durchführen.
Sie werden außerdem feststellen, dass, wenn Sie einen Smart Host angeben, die
Option DIREKTE ÜBERMITTLUNG VERSUCHEN, BEVOR ZUM SMART HOST GESEN-
DET WIRD verfügbar wird. Wenn diese Option aktiviert ist, versucht SMTP, Nach-
richten zunächst direkt zu senden. Standardmäßig ist die Option nicht aktiviert,
und meiner Meinung nach ist das auch gut so, denn sie kann den Sinn und Zweck
des Smart Hosts zunichte machen.
Die letzte hier vorhandene Einstellung ist UMGEKEHRTE DNS-SUCHE AN EINGE-
HENDEN NACHRICHTEN DURCHFÜHREN. Wenn Sie diese Option markieren, dann
wird SMTP versuchen, die Übereinstimmung von IP-Adresse und Domänenname
zu verifizieren. Stimmen diese nicht überein, so erscheint im Empfangsheader
nach der IP-Adresse der Vermerk unverified (nicht verifiziert). Dieses nette kleine
Feature kann sehr hilfreich dabei sein, eingehende Mails mit gefälschten Headern
abzuwehren.
110 Arbeiten mit dem virtuellen Server für SMTP
Hinweis
Auch wenn diese Funktion praktisch ist, sollten Sie sich vergegenwärti-
gen, dass ihre Aktivierung die Serverleistung beeinträchtigen kann, da
der Server für jede Nachricht, die er empfängt, einen DNS-Lookup
durchführen muss.
Abb. 4.19: Im ASSISTENT FÜR NEUE SMTP-DOMÄNE lässt sich festlegen, ob eine
Remotedomäne oder eine Aliasdomäne erstellt werden soll
Hinweis
Die Standarddomäne lässt sich nicht löschen. Wenn Sie eine vorhandene
Domäne haben, die Sie löschen wollen, es sich bei dieser Domäne aber
um die Standarddomäne handelt, dann erstellen Sie eine neue Aliasdo-
mäne und machen Sie diese zur Standarddomäne; danach können Sie
die vorherige Standarddomäne löschen.
Abb. 4.21: Das Dialogfeld EIGENSCHAFTEN VON MCP.DE enthält zwei Registerkarten
zur Einstellung von Routing- und Sicherheitsoptionen der
Remotedomäne
tedomäne auf normalem Wege. Wenn Sie jedoch die Option GESAMTE MAIL
AN SMART HOST WEITERLEITEN wählen, dann müssen Sie den Namen Ihres
Smart Hosts eingeben (siehe hierzu auch die Anmerkungen zu Abbildung
4.18).
Auf der Registerkarte WEITERE OPTIONEN finden Sie ebendiese für Domänen, die
sich regelmäßig einwählen bzw. eine Verbindung herstellen, um Nachrichten
abzuholen. Hier müssen Sie die Option NACHRICHTEN FÜR REMOTE AUSGELÖSTE
ÜBERMITTLUNG IN WARTESCHLANGE EINREIHEN selektieren, damit der SMTP-
Dienst weiß, dass er die Nachrichten, die an diese Remotedomäne gesendet wer-
den sollen, so lange behalten muss, bis eine gültige Anmeldung für die Anforde-
rung der Nachrichten erfolgt ist.
Aus Sicherheitsgründen müssen Sie auf die Schaltfläche HINZUFÜGEN klicken,
wenn Sie Benutzer oder Gruppen der Liste der autorisierten Konten hinzufügen
wollen.
LDAP-Serververbindungen
Das LDAP-Protokoll (Lightweight Directory Access Protocol) wurde als Inter-
netprotokoll für den Zugriff auf Verzeichnisse und Daten in jenen Serververzeich-
nissen entwickelt, die dieses Protokoll unterstützen. Das Active Directory von
Windows 2000 ist LDAP-kompatibel. SMTP kann LDAP zur Anforderung einer
Liste von Mailbenutzern von einem LDAP-Server verwenden. Abbildung 4.22
zeigt die Registerkarte LDAP-ROUTING des Dialogfelds EIGENSCHAFTEN VON
VIRTUELLER STANDARDSERVER FÜR SMTP.
Wenn Sie den Namen des Servers in das entsprechende Textfeld eingegeben
haben, müssen Sie noch den Schematyp bestimmen. Das Listenfeld SCHEMA ent-
hält drei mögliche Schematypen:
• Active Directory. Wählen Sie diese Option, wenn Sie eine Verbindung zu ei-
nem Windows 2000-Server mit Active Directory herstellen. Sie können das
Administrations-Snap-In ACTIVE DIRECTORY-BENUTZER UND -COMPUTER auf
dem Server zur Verwaltung von Postfächern benutzen.
• Site-Server-Mitgliedschaft. Wenn Sie als Bestandteil von MCIS 2.0-Mail
(Microsoft Commercial Internet System) LDAP installiert haben, sollten Sie
diese Option wählen.
• Exchange LDAP-Dienst. Diese Option sollten Sie verwenden, wenn Sie zur
Postfachverwaltung Site Server 3.0 oder höher einsetzen.
Im nächsten Listenfeld BINDUNG müssen Sie festlegen, welche Authentifizie-
rungsebene Sie auswählen wollen. Hier gibt es vier Optionen:
• Anonym. Benötigt keine Authentifizierung.
• Unverschlüsselt. Die Kontendaten werden angefordert, jedoch unverschlüs-
selt übertragen.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 115
• Windows-SSPI. Wenn Sie diese Option selektieren, handeln Client und Server
die Sicherheitseinstellungen untereinander aus. Es wird die sicherste Methode
verwendet, die von beiden verstanden wird.
• Dienstkonto. Diese Option verwendet die Sicherheitsdaten des Kontos, unter
dem der SMTP-Dienst ausgeführt wird.
Wenn Sie die Optionen UNVERSCHLÜSSELT oder WINDOWS-SSPI wählen, werden
Sie zur Eingabe des Domänennamens sowie des Benutzernamens und -kennworts
aufgefordert.
Geben Sie gegebenenfalls in das Textfeld BASIS den Namen desjenigen Contai-
ners im kontaktierten Verzeichnisdienst ein, in dem Sie die Verzeichnisdienstsu-
che starten wollen. Falls Untercontainer vorhanden sind, werden auch diese
durchsucht, sofern Sie hier das übergeordnete Verzeichnis angeben.
Abb. 4.23: Der SMTP-Dienst stellt eine Fülle von Leistungsindikatoren zur
Verwendung im Systemmonitor bereit
Hinweis
Sie müssen im linken Fensterbereich das Systemprotokoll auswählen, um
SMTP-Fehlermeldungen betrachten zu können.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 117
Abb. 4.24: Die Ereignisanzeige beinhaltet mehrere Protokolltypen. Für den SMTP-
Dienst ist das Systemprotokoll zuständig.
Sie können zur Überwachung von SMTP auch die Protokollierung verwenden, in
der alle Befehle aufgezeichnet werden, die von SMTP-Clients empfangen wur-
den. Die Protokollierung kann in einem von vier möglichen Formaten erfolgen;
detaillierte Informationen finden Sie weiter oben im Abschnitt »Protokollierung«.
Nun wird das Fenster PFAD FÜR INTERNE SERVERDATEIEN AUSWÄHLEN geöffnet,
in dem Sie einen Pfad für die Ablage der vom Server erzeugten Dateien eingeben
können. Wählen Sie nach Bestätigung durch WEITER das gewünschte Speicher-
medium aus – DATEISYSTEM für den lokalen Computer oder FREIGABE AUF
REMOTESYSTEM, falls das Verzeichnis auf einem Remotecomputer liegt.
Als Nächstes geben Sie den PFAD ZUM SPEICHERN DER NEWSINHALTE ein, dann
klicken Sie auf FERTIG STELLEN, um die Erstellung des virtuellen NNTP-Servers
abzuschließen.
Der mit IIS 5.0 ausgelieferte NNTP-Dienst unterstützt das NNTP-Protokoll voll-
ständig und ermöglicht sowohl Client-Server- als auch Server-Server-Kommuni-
kation. Ferner unterstützt er den MIME-Standard (Multipurpose Internet Mail
Extensions, Mehrzweckerweiterung für Internetpost) und die Formate HTML,
GIF und JPEG.
Wie der SMTP-Dienst ist auch der NNTP-Dienst zur leichteren Administrierung
in die MMC integriert. Dadurch können Sie außerdem mehrere NNTP-Server von
einer zentralen Stelle im Netzwerk aus verwalten.
Auch diverse Verwaltungsprogramme unter Windows 2000 Server wie etwa der
Systemmonitor und die Ereignisanzeige können zur Ereignisprotokollierung und
Problembehebung beim NNTP-Dienst verwendet werden. Sie können ferner die
ACLs (Access Control Lists, Zugriffssteuerungslisten) von Windows 2000 benut-
zen, um die Sicherheit Ihrer NNTP-Verzeichnisse zu erhöhen. Durch Einrichtung
eingeschränkter NTFS-Berechtigungen für die Verzeichnisse können Sie den
unbefugten Zugriff auf bestimmte Newsgroups verhindern, und mit Hilfe des
CRS (Content Replication System, Replikationssystem für Inhalte) können Sie
die ACLs serverübergreifend aktualisieren, was eine bedeutende Erleichterung
der Administration darstellt.
Wenn Sie den Indexdienst von Microsoft auf Ihrem Server installiert und konfigu-
riert haben, dann können Sie überdies die Suchfunktionen dieses Dienstes ver-
wenden und Ihre Newsgroups auf diese Weise nach bestimmten Gruppen oder
Nachrichten durchsuchen.
Zudem bietet der NNTP-Dienst drei mögliche Authentifizierungsszenarios an:
• Anonyme Anmeldung erlauben. Ist identisch mit der anonymen Anmeldung
bei den Web- und FTP-Diensten und gewährleistet allen Benutzern Zugriff auf
den Server.
• Standardauthentifizierung (Kennwort bleibt unverschlüsselt). Diese Au-
thentifizierungsmethode erfordert die Angabe eines Benutzernamens und eines
Kennworts, die unverschlüsselt übertragen werden.
• Windows-Sicherheitspaket. Wenn Ihre Benutzer ausschließlich mit Mail-
und Newsclients von Microsoft arbeiten, dann können Sie diese Option wäh-
len, damit Benutzernamen und Kennwörter verschlüsselt über das Netzwerk
übertragen werden.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 119
Abbildung 4.25 zeigt den NNTP-Dienst mit einigen installierten und konfigurier-
ten Newsgroups.
Abb. 4.25: Der NNTP-Dienst in der MMC erlaubt die Ansicht und Administration
des Dienstes und der auf dem Server enthaltenen Newsgroups
3. Klicken Sie mit der rechten Maustaste im rechten Fensterbereich auf den Ein-
trag STANDARD und wählen Sie im Kontextmenü den Eintrag EIGENSCHAFTEN.
Das Dialogfeld EIGENSCHAFTEN VON STANDARD (Abbildung 4.27) öffnet sich.
4. Klicken Sie auf die Schaltfläche INHALT und geben Sie den lokalen Pfad oder
die Netzwerkfreigabe für Ihr Standardverzeichnis ein.
Sie haben vielleicht festgestellt, dass ein paar Verzeichnisse und Dateien im Ord-
ner nntpfile vorhanden sind; diese dürfen Sie nicht löschen oder ändern, da es sich
hierbei um interne Datenstrukturen handelt, die der Dienst benötigt.
In der im linken Fensterbereich des Internetdienste-Managers vorhandenen
Baumstruktur befinden sich unterhalb des virtuellen NNTP-Servers die folgenden
vier Einträge:
• Newsgroups. Wählen Sie diesen Eintrag, um die auf dem Server konfigurier-
ten Newsgroups zu betrachten.
• Ablaufrichtlinien. Klicken Sie mit der rechten Maustaste auf diesen Eintrag
und wählen Sie dann im Kontextmenü den Eintrag NEU/ABLAUFRICHTLINIE.
Hierdurch wird der ASSISTENT FÜR NEUE NNTP-ABLAUFRICHTLINIEN gestar-
tet. Geben Sie die Ablaufdaten für Artikel auf diesem Server ein; hierdurch
wird festgelegt, wie lange die Artikel auf dem Server verbleiben, bevor sie ge-
löscht werden.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 121
Abb. 4.27: Über die Schaltfläche INHALT haben Sie Zugriff auf Namen und Ort des
Standardverzeichnisses für Ihren virtuellen NNTP-Server
• Virtuelle Verzeichnisse. Über diesen Eintrag können Sie neue virtuelle Ver-
zeichnisse auf Ihrem Server erstellen. Klicken Sie mit der rechten Maustaste
auf den Eintrag und wählen Sie im Kontextmenü den Eintrag NEU/VIRTUELLES
VERZEICHNIS, um den ASSISTENTEN FÜR NEUES VIRTUELLES NNTP-VER-
ZEICHNIS aufzurufen.
• Aktuelle Sitzungen. Hier können Sie alle aktuellen Verbindungen zum Server
betrachten. Wenn Sie alle Clientverbindungen beenden wollen, klicken Sie mit
der rechten Maustaste auf das Symbol und wählen Sie den Eintrag ALLE BEEN-
DEN im Kontextmenü.
Wenn Sie das Symbol des virtuellen NNTP-Servers im linken Fensterbereich mit
der rechten Maustaste anklicken und dann im Kontextmenü den Eintrag EIGEN-
SCHAFTEN wählen, wird das Dialogfeld EIGENSCHAFTEN VON VIRTUELLER STAN-
DARDSERVER FÜR NNTP aufgerufen (Abbildung 4.28). Hier konfigurieren Sie
den Dienst.
122 Der NNTP-Dienst
Auf der Registerkarte ALLGEMEIN können Sie Namen und IP-Adresse des Servers
auf die gleiche Weise konfigurieren wie bei den Web-, FTP- und SMTP-Diensten.
Bei Anklicken der Schaltfläche VERBINDUNG wird ein kleines Dialogfeld geöff-
net, in dem Sie die maximale Anzahl von Verbindungen und ein Zeitlimit ange-
ben können. Wenn Sie die Option VERBINDUNGEN BESCHRÄNKEN AUF markieren,
wird der Standardwert von maximal 5.000 Verbindungen angezeigt. Sie können
hier entweder den von Ihnen gewünschten Maximalwert eingeben oder das Kon-
trollkästchen demarkieren, wenn Sie die Anzahl der Verbindungen nicht
begrenzen wollen. Wenn Sie einen gut ausgelasteten Server haben, sollten Sie hier
einen Wert eingeben, den Sie durch Überwachung der Serverleistung mit Hilfe
des Systemmonitors bei unterschiedlich vielen Verbindungen ermittelt haben.
Sie können auch ein Zeitlimit setzen, welches bestimmt, wie lange der Server
eine Verbindung mit einem Client aufrechterhält, der sich nicht meldet. Standard-
mäßig sind zehn Minuten eingestellt.
Unter dem Abschnitt VERBINDUNG finden Sie auf der Registerkarte ALLGEMEIN
die inzwischen vertraute Option PROTOKOLLIERUNG AKTIVIEREN. Ich werde an
dieser Stelle nicht näher darauf eingehen, denn die Protokollierungsoptionen ent-
sprechen denen der anderen Dienste. Ganz unten befindet sich dann noch die
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 123
Option PFAD-KOPFZEILE. Hier können Sie eine Zeichenkette angeben, die dann in
der Zeile Path (Pfad) Ihrer Mails angegeben wird.
Wechseln Sie nun auf die Registerkarte ZUGRIFF (Abbildung 4.29).
Abb. 4.29: Auf der Registerkarte ZUGRIFF können Sie verschiedene Optionen für
Sicherheit und Zugriffskontrolle beim NNTP-Dienst einstellen
Abb. 4.30: Die Registerkarte EINSTELLUNGEN steuert die Größe von Nachrichten,
Moderationsdaten und Newsfeed-Parameter
Beginnen wir ganz oben auf der Registerkarte mit der Option BEITRÄGE VON
CLIENTS VERÖFFENTLICHEN. Wenn Sie dieses Kontrollkästchen deselektieren,
dann wird der Server keine von Clients gesendeten Nachrichten akzeptieren; er
wird in diesem Fall nur als Veröffentlichungsmedium benutzt. Abbildung 4.31
zeigt eine Fehlermeldung, die von Outlook Express angezeigt wird, wenn Sie ver-
suchen, eine Nachricht an einen Server zu senden, bei dem Clientbeiträge deakti-
viert sind.
Wenn Sie den Versand von Clientbeiträgen an den Newsserver zulassen, dann
können Sie die Größe aller Beiträge (Nachrichten) sowie den maximalen Umfang
aller Beiträge einer einzelnen Verbindung beschränken. Die Standardeinstellung
für die Maximalgröße einer Nachricht wird über die Option MAX. GRÖSSE EINES
BEITRAGS (KB) angegeben, der Standardwert liegt hier bei 1.000 Kbyte.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 125
Abb. 4.31: Wenn die Option BEITRÄGE VON CLIENTS VERÖFFENTLICHEN auf der
Registerkarte EINSTELLUNGEN nicht markiert ist, gestattet es der NNTP-
Dienst Clients nicht, Artikel an den Server zu schicken
Einige Benutzer lesen und schreiben ihre Beiträge offline; insofern kann die
Datenmenge der bei der nächsten Verbindung hochgeladenen Beiträge schon
recht beträchtlich sein. Wenn Sie die maximale Größe aller Beiträge begrenzen
wollen, die ein Client im Verlauf einer Verbindungssitzung senden kann, dann
markieren Sie das Kontrollkästchen MAXIMALE GRÖSSE ALLER BEITRÄGE (MB)
und geben einen Wert (in Mbyte) ein (Standard: 20 Mbyte). Mit dieser Option
verhindern Sie ein Gedränge auf Ihrem Server.
Wenn Sie keinerlei Begrenzungen aufstellen wollen, dann deselektieren Sie beide
Kontrollkästchen. Verwenden Sie auch hier den Systemmonitor und beobachten
Sie ferner den verfügbaren Festplattenspeicher, um pragmatische Grenzwerte zu
ermitteln.
Die nächste Option auf der Registerkarte EINSTELLUNGEN bestimmt, ob Ihr Ser-
ver Beiträge von Newsfeeds akzeptiert; wenn Sie das Kontrollkästchen aktivieren
(Standardeinstellung), dann können Newsfeeds ihre Beiträge auf Ihren Server
126 Der NNTP-Dienst
hochladen. Auch hier können Sie die Größe eines Artikels und die Gesamtgröße
aller während einer Verbindungssitzung hochgeladenen Daten auf die gleiche
Weise limitieren wie oben bei den Clientbeiträgen.
Unterhalb dieses Abschnitts befindet sich die Option ANDEREN SERVERN DAS
ANFORDERN (PULL) VON BEITRÄGEN ERMÖGLICHEN. Wenn Sie das Kontrollkäst-
chen aktivieren, dann kann ein anderer Newsserver im Internet, einem Intranet
oder Ihrem WAN-Netzwerk sich Newsgroups und Beiträge von Ihrem Server
herunterladen und selbst verwenden. Wenn Sie ein WAN-Netzwerk haben, dann
können Sie vielleicht von dieser Möglichkeit profitieren, denn so lassen sich
Newsgroups und Beiträge automatisch server- oder domänenübergreifend repli-
zieren. Sie sollten den Verbindungsstatus Ihres Servers allerdings überwachen,
sofern er über das Internet erreicht werden kann; möglicherweise versuchen
externe Server oder Benutzer, Ihren Server als Quelle für Newsgroups zu miss-
brauchen. Sie müssen also in jedem Fall Zugriffsbeschränkungen für jene Ver-
zeichnisse konfigurieren, die über das Internet erreichbar sind.
Ganz unten auf der Registerkarte EINSTELLUNGEN finden Sie drei Textfelder vor.
Im ersten Textfeld SMTP-SERVER FÜR MODERIERTE NEWSGROUPS legen Sie
einen Mailserver fest, an den Beiträge für eine moderierte Newsgroup gesendet
werden. In einer moderierten Newsgroup erhält der Moderator alle Beiträge,
bevor sie auf den Server gelegt werden und sich im allgemeinen Zugriff befinden.
Auf diese Weise kann der Moderator bestimmen, ob der Inhalt des Beitrags über-
haupt relevant ist.
Das zweite Textfeld STANDARDMODERATORDOMÄNE dient der Weiterleitung von
Beiträgen an einen Standardmoderator, wenn diese Beiträge an eine moderierte
Gruppe gesendet werden, ohne dass ein Moderator spezifiziert wurde.
Das letzte Textfeld sollte die E-Mail-Adresse eines Administrators enthalten, der
Unzustellbarkeitsberichte für Beiträge erhält, die dem Newsgroup-Moderator
nicht zugestellt werden konnten.
Abbildung 4.32 zeigt die letzte Registerkarte des Dialogfeld EIGENSCHAFTEN
namens SICHERHEIT. Klicken Sie bei Bedarf auf die Schaltfläche HINZUFÜGEN,
um eine Kontenliste für Computer oder Domäne zu öffnen, in der Sie die Benut-
zer festlegen, die auf dem Server Änderungen vornehmen dürfen. Wenn Sie einen
Benutzer oder eine Gruppe in der Operatorenliste auswählen und die Schaltfläche
ENTFERNEN anklicken, dann wird das Element aus der Liste der berechtigten
Benutzer entfernt.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 127
Abb. 4.32: Auf der Registerkarte SICHERHEIT werden alle vorhandenen Operatoren
aufgelistet, die Berechtigungen für den NNTP-Server haben
Abb. 4.33: Das Dialogfeld LEISTUNGSINDIKATOREN HINZUFÜGEN listet die für das
Objekt NNTP-SERVER vorhandenen Indikatoren auf. Wenn Sie die
Schaltfläche ERKLÄRUNG anklicken, erscheint ein Erläuterungsfenster
zum selektierten Indikator.
BEFEHLE hingegen bezieht sich auf mögliche Befehle, die der Server von den
Clients empfängt und verarbeitet.
Ich empfehle Ihnen, zunächst die folgenden Leistungsindikatoren zu überwachen:
• Gesamtzahl von Bytes/Sek. Dieser Indikator misst die Gesamtzahl der Bytes,
die pro Sekunde durch den NNTP-Server geleitet werden. Er hilft Ihnen beim
Auffinden von Flaschenhälsen auf Ihrem Server.
• Maximale Verbindungen. Verwenden Sie diesen Indikator zur Überwachung
der mit dem Server hergestellten Verbindungen. Dieser Wert sollte immer un-
ter dem Grenzwert liegen, den Sie auf der Registerkarte ALLGEMEIN gesetzt
haben.
• Anmeldungsversuche und Anmeldungsfehlschläge. Wenn Sie einen siche-
ren Server betreiben, dann zeigt Ihnen dieser Indikator, ob ein Unbefugter ver-
sucht hat (oder gerade versucht), in Ihren Server einzubrechen.
Zugegeben: Dies ist keine sehr umfangreiche Liste mit Leistungsindikatoren, die
Sie auf Ihrem Server konfigurieren sollten, aber sie stellt immerhin einen guten
Ausgangspunkt dar, um sich ein Bild davon zu machen, welche Leistung Ihr Ser-
ver in Bezug auf den NNTP-Dienst erbringt.
Warnung
Auch wenn die Leistungsindikatoren eine hervorragende Möglichkeit
darstellen, Ihren Server und vor allem seine Leistung zu überwachen, so
sollten Sie doch immer bedenken, dass diese Überwachung dem Server
ihrerseits Leistung abverlangt. Wählen Sie also weise.
Ich habe Ihnen bereits gezeigt, wie Sie die Protokollierung für den NNTP-Dienst
konfigurieren. Sie können diese Protokolle verwenden, um festzustellen, ob bei
der Funktionsweise des Dienstes Abweichungen auftreten. Jedes Mal, wenn ein
Benutzer eine Verbindung zum Server herstellt, einen Beitrag liest oder versendet
oder sich abmeldet, wird im Protokoll ein neuer Eintrag erstellt.
Sie können sich diese Protokolle als Textdateien anzeigen lassen oder in eine
andere Anwendung – etwa eine Tabellenkalkulation oder eine Datenbankanwen-
dung – importieren, um Tendenzen zu entdecken.
Eine andere Möglichkeit, den Dienst zu überwachen, ist die Ereignisanzeige.
Rufen Sie diese über START/PROGRAMME/VERWALTUNG/EREIGNISANZEIGE auf
und wählen Sie dann den Eintrag SYSTEMPROTOKOLL im Baumdiagramm, um
sich die Systemprotokolle anzeigen zu lassen, die während des Betriebs Ihres
Windows 2000-Servers erstellt wurden.
Sehr wahrscheinlich werden Sie sich jetzt gerade besonders für NNTP-Einträge
interessieren. Selektieren Sie also das Symbol SYSTEMPROTOKOLL und wählen
Sie dann im Menü ANSICHT den Eintrag FILTER. Nun wird das Dialogfeld EIGEN-
SCHAFTEN VON SYSTEMPROTOKOLL (Abbildung 4.34) aufgerufen.
130 Der NNTP-Dienst
Wählen Sie auf der Registerkarte FILTER im Listenfeld EREIGNISQUELLE den Ein-
trag NNTPSVC (NNTP Service, NNTP-Dienst), um die Anzeige auf solche Ereig-
nisse zu beschränken, die mit dem NNTP-Dienst in Zusammenhang stehen.
Wenn Sie die Protokolldateien oder die in der Ereignisanzeige vorhandenen Feh-
lermeldungen durchsuchen, werden Sie über einige Einträge stolpern, bei denen
Ihnen empfohlen wird, den NNTP-Server wiederherzustellen. Diese Option
wurde implementiert, um den Server möglichst schnell wieder in Betrieb zu brin-
gen, falls etwa die Festplatte ausgefallen ist, Dateien versehentlich gelöscht wur-
den oder es Probleme beim Zugriff auf Beiträge gibt.
Sie können dabei zwischen zwei Möglichkeiten der Wiederherstellung wählen.
STANDARD ist die schnellere Option, stellt aber nicht alle Dateien wieder her.
Wenn Sie auf die Wiederherstellung aller Dateien Wert legen, wählen Sie INTEN-
SIV.
Warnung
Vergewissern Sie sich vor dem Ausführen einer Wiederherstellung, dass
Sie den NNTP-Dienst beendet haben.
Kapitel 4 • Administration von SMTP- und NNTP-Diensten 131
Wenn Sie den Dienst beendet haben, wählen Sie das Symbol des virtuellen
NNTP-Servers im Verzeichnisdiagramm aus und selektieren Sie im Menü VOR-
GANG den Eintrag ALLE TASKS/SERVER AKTUALISIEREN, um das Dialogfeld VIR-
TUELLEN NNTP-SERVER WIEDERHERSTELLEN (Abbildung 4.35) aufzurufen.
Last but not least können Sie auch das Telnetprogramm verwenden, um zu über-
prüfen, ob das Problem beim Client oder beim Server vorliegt.
4.3 Fazit
In diesem Kapitel haben wir die SMTP- und NNTP-Dienste betrachtet, die
Bestandteil von IIS 5.0 sind. Es wurden verschiedene Methoden zur Verwaltung
und Überwachung erläutert, damit Sie bei diesen beiden Diensten eine optimale
Leistung und Effizienz erzielen.
Mit den mit Windows 2000 Server ausgelieferten Programmen können Sie die
Leistung der Dienste überwachen und auf Ihrer Serverhardware und Ihre Verbin-
dungen hin optimieren.
Abschließend haben Sie gesehen, wie ein virtueller NNTP-Server zur Bereitstel-
lung von Diskussionsforen für die Mitarbeiter und Kunden Ihres Unternehmens
verwendet werden kann.
Kapitel 5
Publizieren mit WebDAV
1. Erstellen Sie einen Ordner im Verzeichnis InetPub, den Sie für das WebDAV-
Publishing verwenden wollen. In der Regel wird dies das Verzeichnis \Inet-
Pub\WebDAV sein – Sie können allerdings auch ein beliebiges anderes Ver-
zeichnis wählen. (Erstellen Sie diesen Ordner jedoch nicht im
Unterverzeichnis wwwroot, da dieses Verzeichnis vergleichsweise lasche
Sicherheitseinstellungen hat.)
2. Erstellen Sie nun im Internetdienste-Manager unter Ihrer Website ein virtuelles
Verzeichnis und nennen Sie dieses WebDAV. Lassen Sie dieses virtuelle Ver-
zeichnis auf das in Schritt 1 erstellte Verzeichnis verweisen.
3. Gewähren Sie die Berechtigungen Lesen, Schreiben und Verzeichnis durchsu-
chen für das Verzeichnis. Dadurch können Clients Daten in diesem Verzeich-
nis publizieren und die Inhalte lesen.
4. Klicken Sie im ASSISTENTEN ZUM ERSTELLEN VIRTUELLER VERZEICHNISSE
auf die Schaltfläche FERTIG STELLEN. Voilà: Nun haben Sie ein WebDAV-
Verzeichnis erstellt.
Nun müssen Sie noch Clients aktivieren, die Daten in diesem Verzeichnis publi-
zieren können. Diese Aufgabe werde ich weiter unten unter »Dateien publizieren
und verwalten« näher erläutern.
Abb. 5.1: Das Dialogfeld EIGENSCHAFTEN VON WEBDAV mit aktivierter Registerkarte
VIRTUELLES VERZEICHNIS, auf der Sie die Zugriffsberechtigungen einstellen
Wie Abbildung 5.1 erkennen lässt, können Sie nicht nur LESEN, SCHREIBEN und
VERZEICHNIS DURCHSUCHEN, sondern auch ein paar andere Berechtigungen akti-
vieren.
Die erste Berechtigung heißt SKRIPTZUGRIFF. Auch wenn wir hier ein WebDAV-
und kein Websiteverzeichnis behandeln, das der Öffentlichkeit Webseiten zur Ver-
fügung stellt, so können Sie das Verzeichnis trotzdem auch für diesen Zweck
verwenden. Diese Berechtigung gibt Clients Einsicht in den Inhalt Ihrer Skriptda-
teien; wenn Sie nicht wollen, dass die Clients auf Ihre ASP-Codes zugreifen, dann
deaktivieren Sie diese Berechtigung.
Kapitel 5 • Publizieren mit WebDAV 139
Die anderen beiden noch nicht erwähnten Berechtigungen sind BESUCHE PROTO-
KOLLIEREN und RESSOURCE INDIZIEREN. Sie können eine Protokollierung der
Zugriffe auf das Verzeichnis durch Markierung des Kontrollkästchens BESUCHE
PROTOKOLLIEREN aktivieren. Eine Protokolldatei wird nur erstellt, wenn die Pro-
tokollierung für die Site aktiviert wurde.
Die andere Option RESSOURCE INDIZIEREN ist eigentlich keine Berechtigung im
ursprünglichen Sinne des Wortes; vielmehr teilen Sie dem Indexdienst durch
Markieren des Kontrollkästchens mit, dass er das Verzeichnis indizieren soll.
Dadurch gestatten Sie Clients das Durchsuchen des Verzeichnisinhalts.
Warnung
Denken Sie bei der Konfiguration von Zugriffssteuerungen auf einem
NTFS-Datenträger immer daran, dass Windows 2000 standardmäßig die
NTFS-Berechtigung Vollzugriff für alle Verzeichnisse erteilt. Dieser
Umstand muss beim Erstellen neuer Verzeichnisse unbedingt beachtet
werden.
Tipp
Wenn Sie den Indexdienst für das WebDAV-Verzeichnis standardmäßig
bereitstellen wollen, sollten Sie im Applet DIENSTE die Startoption Auto-
matisch für ihn selektieren; der Dienst wird dann immer automatisch
gestartet, wenn Windows 2000 hochgefahren wird.
Sie können den Indexdienst auch über die Eingabeaufforderung oder das Fenster
AUSFÜHREN (aufzurufen über START/AUSFÜHREN) aufrufen; geben Sie hierzu in
einem dieser Fenster den Befehl net start cisvc ein.
140 WebDAV-Verzeichnisse durchsuchen
Abb. 5.2: Das Fenster DIENSTE zeigt eine Liste aller installierten Dienste an, die Sie
dann beliebig starten, beenden oder anhalten können
Hinweis
Wenn der Dienst auf Ihrem System bisher deaktiviert war, kann es eine
Zeitlang dauern, bis alle zu indizierenden Elemente bearbeitet wurden.
Wenn Sie also einen Suchvorgang in Ihrem WebDAV-Verzeichnis starten
und kein Suchergebnis erhalten, dann geben Sie dem Indexdienst etwas
mehr Zeit zur Erstellung seiner Datenbank. Weitere Informationen zum
Indexdienst finden Sie in der Online-Hilfe.
Warnung
Wenn Ihr Laufwerk NTFS-formatiert ist, können Ihre Clients reguläre
Suchvorgänge im gesamten Verzeichnis ausführen. Haben Sie es jedoch
unter FAT oder FAT32 formatiert, dann lassen sich nur die Inhalte der
Ressourcen durchsuchen, nicht jedoch die Dateieigenschaften, da die
FAT-Systeme dies nicht unterstützen.
Abb. 5.3: Das Dialogfeld SUCHERGEBNISSE gestattet die Angabe von Suchoptionen
und Laufwerken, auf die die Suche beschränkt werden soll
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="de">
<title>Kunden-Support -- Suche</title>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="Microsoft Theme" content="expeditn 001, default">
<meta name="Microsoft Border" content="tlb, default">
</head>
<body>
<p><a name="top">V</a>erwenden Sie das folgende Formular, um die Dokumente
dieser Site nach bestimmten Wörtern oder Wortkombinationen zu durchsuchen. Die
Suchmaschine zeigt Ihnen eine sortierte Liste gefundener Dokumente an, in der
142 WebDAV-Verzeichnisse durchsuchen
die relevanteren Dokumente weiter oben stehen. Jeder Listeneintrag ist eine Ver-
knüpfung zum zugehörigen Dokument; wenn das Dokument einen Titel hat, wird die-
ser angezeigt, andernfalls nur der Dateiname des Dokuments. Eine kurze, mit
Beispielen versehene Erläuterung der Sucheinstellungen finden Sie <a href=
"#querylang">hier</a>!
<!--WEBBOT
bot=Search
S-LINK
S-FIELDS="TimeStamp,DocumentK,Weight"
S-INDEX="All"
S-DSN="default"
TAG="BODY"
S-Text="Suche nach:"
I-Size="20"
S-Submit="Suche starten"
S-Clear="Zurücksetzen" b-useindexserver="1"
-->
<hr align="center">
<h2><a name="querylang">Sucheinstellungen</a></h2>
<p>Die Suchfunktion gestattet die Verwendung beliebiger Boole'scher Ausdrü-
cke (UND, ODER, NICHT) im Suchausdruck und die Gruppierung mit Klammern. Zum
Beispiel:</p>
<blockquote>
<dl>
<dt><strong><tt>Informationen finden</tt></strong></dt>
<dd>sucht nach Dokumenten, die 'Informationen' oder 'finden' enthalten.<br>
<br>
</dd>
<dt><strong><tt>Informationen ODER finden</tt></strong></dt>
<dd>Das gleiche wie oben.<br>
<br>
</dd>
<dt><strong><tt>Informationen UND finden</tt></strong></dt>
<dd>sucht nach Dokumenten, die sowohl 'Informationen' als auch 'finden' ent-
halten.<br>
<br>
</dd>
<dt><strong><tt>Information NICHT finden</tt></strong></dt>
<dd>sucht nach Dokumenten, die zwar 'Informationen', nicht jedoch 'finden'
enthalten.<br>
<br>
</dd>
<dt><strong><tt>(Information NICHT finden) UND WAIS</tt></strong></dt>
<dd>sucht nach Dokumenten, die 'WAIS' und 'Informationen', nicht jedoch
'finden' enthalten.<br>
<br>
</dd>
Kapitel 5 • Publizieren mit WebDAV 143
<dt><strong><tt>Web*</tt></strong></dt>
<dd> sucht nach Dokumenten, die Wörter enthalten, die mit 'Web' beginnen<br>
<br>
</dd>
</dl>
</blockquote>
<h5><a href="#top">Zum Seitenanfang</a></h5>
</body>
</html>
Beachten Sie den Listingbereich, der mit <!-WEBBOT beginnt. Dies ist eigentlich
eine FrontPage-Komponente, die Suchfunktionen bereitstellt. Die letzte Zeile in
diesem Bereich, S-Clear="Reset" b-useindexserver="1", zeigt durch Zuweisung
des Wertes »1« an, dass für die Suche der Indexdienst verwendet wird.
Die letzte hier zu erwähnende Suchmethode macht Gebrauch von XML. Dieses
Buch will und kann jedoch kein Lehrbuch für XML sein, da es dann ungefähr
dreimal so umfangreich wäre. Eine Ressource zur Erstellung von Suchwerkzeu-
gen unter Verwendung von XML ist das Windows 2000 SDK (Software Develop-
ment Kit), welches auf der Website von Microsoft unter http://msdn.micro-
soft.com/windows2000/ betrachtet und heruntergeladen werden kann.
Abb. 5.4: Im Fenster FERTIGSTELLEN DES ASSISTENTEN wird angezeigt, dass das
Verzeichnis gefunden wurde und Sie nun eine Verbindung herstellen
können
Starten Sie zu diesem Zweck den Internet Explorer und wählen Sie im Menü
DATEI den Eintrag ÖFFNEN. Das in Abbildung 5.5 gezeigte Dialogfeld wird auf-
gerufen. Ich habe hier den bereits früher verwendeten URL eingegeben, um eine
Verbindung mit dem Verzeichnis WebDAV in der Netzwerkumgebung herzustel-
len.
Abb. 5.5: Das Dialogfeld ÖFFNEN des Internet Explorers 5.0, in dem Sie ein
Verzeichnis oder einen Dateinamen zum Öffnen spezifizieren
Sie müssen den Ordner, wenn Sie ihn zur Publikation öffnen, in jedem Fall als
Webordner öffnen; markieren Sie zu diesem Zweck das Kontrollkästchen ALS
WEBORDNER ÖFFNEN. Andernfalls wird der Ordner so angezeigt wie FTP-Sites,
mit denen Sie über das Internet eine Verbindung hergestellt haben. In diesem Fall
ist eine Publizierung nicht möglich.
Nach dem Öffnen des Verzeichnisses können Sie über das Menü DATEI neue Ord-
ner erstellen und dann dort Dateien publizieren.
5.6 Fazit
Die Bedeutung des WebDAV-Protokolls (einer Erweiterung des Protokolls
HTTP 1.1) für die Internetkommunikation nimmt derzeit in hohem Maße zu.
Wenn Sie weitergehende Informationen zur WebDAV-Spezifikation wünschen,
suchen Sie die Website der IETF (Internet Engineering Task Force) unter
www.ietf.org auf und schlagen Sie dort unter RFC 2518 nach.
Sie haben gesehen, dass WebDAV eine Technologie ist, die durch Erstellung eines
Webpublikationsverzeichnisses das gemeinsame Bearbeiten von Dokumenten
und anderen Dateien auf einem IIS 5.0-Server gestattet. Ferner wurden in Zusam-
menhang mit WebDAV-Verzeichnissen einige Sicherheitsaspekte besprochen; die
Sicherheit Ihrer Dateien ist insbesondere dann sehr wichtig, wenn Sie das Ver-
zeichnis im Internet publizieren.
Ich habe Ihnen noch einige Beispiele für das Durchsuchen von WebDAV-
Verzeichnissen mit den Suchwerkzeugen von Windows 2000 und dem Index-
dienst gegeben; weitere Suchfunktionen für Dateiattribute und -eigenschaften las-
sen sich über XML realisieren.
Abschließend wurden verschiedene Methoden für die Publizierung von Inhalten
im WebDAV-Verzeichnis beschrieben – mit Windows 2000, dem Internet
Explorer 5.0 und Microsoft Office 2000.
Kapitel 6
Namensauflösung
Wenn Sie mit Internetstandards und den TCP/IP-Protokollen vertraut sind, dann
wissen Sie auch, dass alle Computer in einem TCP/IP-Netzwerk eine eindeutige
IP-Adresse benötigen. Computer arbeiten mit Zahlen, wir Menschen hingegen
kommen besser mit Namen klar – dies gilt auch für Websites.
Damit wir eine Site mit einem etwas leichter zu merkenden Namen aufrufen kön-
nen, verwendet TCP/IP die Namensauflösung. Dabei wird ein Computer verwen-
det, der IP-Adressen benutzerfreundliche Namen zuordnet. Diese Namen werden
als »Domänennamen« oder »Hostnamen« bezeichnet.
Für die Namensauflösung werden verschiedene Methoden verwendet; wir werden
all diese Ansätze an dieser Stelle erläutern, soweit sie IIS 5.0 betreffen.
Hinweis
Zwar liegt der IP-Adressbereich immer zwischen 0 und 255, aber die
Werte 0 und 255 sind reserviert und können deswegen nicht benutzt
werden. Im Internet finden Sie zahlreiche gute Texte zur TCP/IP-Adres-
sierung.
Kapitel 6 • Namensauflösung 149
Mein IIS-Server hat die Adresse 192.168.5.1. Diese ändert sich in meinem Netz-
werk nie, deswegen ist sie als statische IP-Adresse zu betrachten.
Ich will hier nicht zu sehr in das Thema TCP/IP einsteigen, denn dies ist nicht der
Zweck dieses Buches. Es ist allerdings wichtig, die verschiedenen IP-Adressklas-
sen zu kennen, da sich diese direkt auf die Adressierung von Hosts im Netzwerk
auswirken.
Insgesamt sind fünf Klassen von IP-Adressen (Klassen A bis E) vorhanden, und
jede Klasse enthält einen Adressbereich, der eine bestimmte Anzahl von Hosts
und Netzwerken ermöglicht. Unter einem Host verstehe ich einen einzelnen Com-
puter, der eine IP-Adresse bekommt; ein Netzwerk ist per Definition eine Zone,
deren Sinn in der zweckgebundenen Unterteilung einer Menge von Computern
besteht.
Adressen der Klasse A beginnen mit 0.0.0.1 und enden bei 126.255.255.254; die
Klasse B bezieht sich auf den Bereich zwischen 128.0.0.1…191.255.255.254,
und die Klasse C auf den Bereich 192.0.0.1…254.255.255.254. Die Klassen D
und E sind Sonderklassen, die in normalen Netzwerkstrukturen nicht eingesetzt
werden; wir werden hier nicht weiter darauf eingehen.
Ein paar wichtige Fakten zu den IP-Adressen in einem TCP/IP-Netzwerk.
Zunächst wären die Adressen im Bereich 127.x.x.x zu nennen. Diese werden zu
Loopback-Testzwecken verwendet, d.h. zur Prüfung des Netzwerkbetriebs auf
dem lokalen Computer. Wenn Sie an Ihrem Rechner den Befehl ping 127.0.0.1
eingeben, dann erhalten Sie die Ergebnisse für den lokalen Host, also den Com-
puter, vor dem Sie sitzen; dieser ping-Befehl arbeitet intern und wird gar nicht
erst in Ihr Netzwerk ausgegeben.
Ein weiterer Punkt, der beachtet werden muss, ist die Tatsache, dass im Internet
verschiedene IP-Adressbereiche nicht verwendet werden – auf diese Weise kön-
nen private TCP/IP-Netzwerke auch mit Adressen arbeiten, die der internen Ver-
wendung vorbehalten sind. Die Adressen befinden sich in den Bereichen 10.0.0.x
und 192.168.x.x. Die Adressen im Bereich 10.0.0.x werden von diversen Internet-
providern (z.B. von Providern von xDSL- oder Kabelanschlüssen) in bestimmten
Netzwerkkonfigurationen verwendet. Tatsächlich richten diese Provider kleine
interne Netzwerke mit dem Adressbereich 10.0.0.x ein, um den Clients Adressen
dynamisch zuzuweisen und einem Client dann, sobald er mit der Außenwelt Ver-
bindung aufnimmt, mit einer externen, gültigen Internet-IP zu versorgen.
Ein Internetprovider in meiner Gegend verwendet diesen Ansatz bei seiner
ADSL-Implementation. Auf diese Weise können sich die Benutzer intern mitei-
nander verbinden und es entsteht innerhalb des kleinen Netzwerks eine Art
»Benutzerumgebung«. Ein Host wird nur dann von außen erkannt, wenn er über
eine gültige Internet-IP-Adresse verfügt.
Aus diesen Gründen empfehle ich Ihnen den IP-Adressbereich 192.168.x.x für
interne Netzwerke und Intranets. In diesem Bereich können Sie die Adressen mit
150 Namensauflösung bei IIS 5.0
Hilfe der Subnetzmaskierung nach Bedarf manipulieren, wenn die Anzahl Ihrer
Hosts und Netzwerke variiert.
In jeder IP-Adressklasse gibt es noch zwei weitere Hostadressen, die Sie nicht
verwenden können, nämlich .0 und .255. Die .0 bezeichnet »dieses Netzwerk«,
die .255 ist eine Broadcast-Adresse. TCP/IP verwendet diese beiden Adressen auf
eine spezielle Weise und gibt sie nicht frei.
Betrachten wir nun einmal den Adressbereich 192.168.0.x. In diesem Bereich las-
sen sich insgesamt 254 Hostcomputer ansprechen, nämlich über die Adressen
192.168.0.1 bis 192.168.0.254. Sie sind also in diesem Netzwerkabschnitt
zunächst einmal auf 254 Hosts beschränkt. Was aber, wenn Sie mehr Adressen
benötigen?
Auch hierzu gibt es Lösungen. Die erste ist die Einrichtung eines weiteren Netz-
werks auf der Basis des folgenden IP-Adressbereichs – 254 weitere Hosts ließen
sich dann mit den Adressen 192.168.1.1 bis 192.168.1.254 versehen. Sie benöti-
gen dann eine Subnetzmaske auf Ihrem Computer, damit diese feststellen können,
welcher Host sich in welchem Netzwerk befindet.
In den beiden oben angeführten Beispielen wurden die Netzwerkadressbereiche
192.168.0.x und 192.168.1.x benutzt. Jedes Netzwerk hat die gleichen Hostnum-
mern, weswegen Sie eine Möglichkeit brauchen, um festzustellen, mit welchem
Host Sie eine Verbindung herstellen wollen. Hier nun kommt die Subnetzmaske
ins Spiel. Sie müssen für diese Adressen die Subnetzmaske 255.255.255.0 defi-
nieren, denn dadurch ist sichergestellt, dass immer dann, wenn Sie Daten oder
Nachrichten an einen Hostcomputer senden, TCP/IP zuerst die Subnetzmaske
überprüft, um festzustellen, wie Netzwerk und Hostadresse zu bestimmen sind.
Ein Beispiel: Angenommen, Sie senden ein Datenpaket an den Host mit der IP-
Adresse 192.168.0.34. Wenn Sie die Subnetzmaske 255.255.255.0 gewählt haben,
weiß TCP/IP, dass zuerst das Netzwerk 192.168.0 aufzusuchen ist, bevor die
Host-IP 34 gesucht wird; diese Bestimmung wird mit Hilfe binärer Rechenpro-
zesse an der IP-Adresse vorgenommen.
Wie Sie wahrscheinlich wissen, handelt es sich bei einer IP-Adresse um 32-Bit-
Zahlen, die in vier so genannte Oktette unterteilt sind. Wir betrachten diese Num-
mern als Dezimalzahlen, der Computer jedoch behandelt sie als Binärzahlen. Das
Binäräquivalent der IP-Adresse 192.168.0.34 beispielsweise lautet 11000000
10101000 00000000 00100010. Um nun die Netzwerkadresse basierend auf der
Netzmaske zu ermitteln, führt TCP/IP eine binäre UND-Verknüpfung durch. Das
binäre UND verwendet eine so genannte Wahrheitstabelle, die nachfolgend auf-
geführt ist:
1 0
1 1 0
0 0 0
Kapitel 6 • Namensauflösung 151
Die Tabelle funktioniert wie folgt: Sie wählen in der linken Spalte die erste und in
der oberen Zeile die zweite Binärzahl aus; am Schnittpunkt der beiden Zahlen in
der Tabelle finden Sie dann das Ergebnis der UND-Verknüpfung. Wenn Sie bei-
spielsweise in der linken Spalte und in der oberen Zeile jeweils die binäre 0 aus-
wählen, dann befindet sich am Schnittpunkt ebenfalls die 0.
UND-Verknüpfungen verlaufen also immer nach dem folgenden Schema:
• 1 UND 1 führt zu 1
• 1 UND 0 führt zu 0
• 0 UND 1 führt zu 0
• 0 UND 0 führt zu 0
Schon verwirrt? Wenden wir das Prinzip doch nun zur UND-Verknüpfung der
Subnetzmaske mit unserer IP-Adresse an:
Wenn wir nun die Binärzahl, die wir als Ergebnis der UND-Verknüpfung erhalten
haben, wieder in eine Dezimalzahl umwandeln und das letzte Oktett entfernen,
dann finden wir die Netzwerkadresse 192.168.0 vor.
Es geht natürlich auch weniger kompliziert, ohne Hinzuziehung der Binärarith-
metik: Wann immer Sie eine 255 in der Netzmaske sehen, wissen Sie, dass der
Adressteil, auf den sich das Oktett bezieht, exakt übereinstimmen muss. Wenn
also die Netzmaske 255.255.0.0 mit der vorhergehenden IP-Adresse verknüpft
wird, dann ist die Netzwerkadresse 192.168, die Hosts erhalten die Adressen .0.1
bis 255.254.
Dieses letzte Beispiel zeigt das Prinzip des »Subnetting«, d.h. der Unterteilung
der IP-Adresse zwecks Erhöhung der Anzahl von IP-Adressen. Dieses ist die
zweite Möglichkeit zur Erreichung dieses Ziels – in diesem Fall brauchen Sie kei-
nen weiteren IP-Adressbereich.
Die Funktionsweise des Subnetting ist eine Erweiterung des oben aufgeführten
Netzmaskenbeispiels. Durch Verwendung der »richtigen« Subnetzmaske können
Sie Ihrem TCP/IP-Netzwerk mitteilen, dass Sie nur die ersten beiden Oktette der
IP-Adresse für das Netzwerk benötigen – die übrigen können für die Hosts
benutzt werden. Dadurch erhalten Sie eine IP-Adressanzahl von 65.532 (statt
254) – das sollte bereits für viele Netzwerke ausreichend sein.
Sie können natürlich statt der statischen auch eine dynamische Zuweisung der IP-
Adressen für die Computer in Ihrem Netzwerk vornehmen. Voraussetzung dafür
ist die Einrichtung eines DHCP-Servers. Ein DHCP-Server hat die Aufgabe, auf
152 Namensauflösung bei IIS 5.0
Warnung
Sie sollten Ihren IIS-Server nicht so konfigurieren, dass er eine IP-Adresse
von einem DHCP-Server bezieht; in diesem Fall können Sie ihm weder
einen Namen geben noch über das Netzwerk darauf zugreifen. Konfigu-
rieren Sie Ihren IIS-Server also mit einer statischen IP-Adresse.
Wenn Sie Ihrem IIS-Server eine IP-Adresse zugewiesen haben, kann dieser
anfangen, Anfragen von Clients auf der Basis der IP-Adresse zu bearbeiten. Die
Suche nach Computern im Internet wird nicht einfacher, wenn man sie auf der
Basis der IP-Adresse durchführt; aus diesem Grunde sollten Sie Ihrem IIS-Server
einen Domänennamen und eine statische IP-Adresse gönnen, damit die Clients
ihn über den vollständig qualifizierten Domänennamen auffinden können.
Ein vollständig qualifizierter Domänenname besteht aus dem Hostnamen des Ser-
vers und dem Domänennamen. Ein Beispiel hierfür ist der Webserver bei Markt +
Technik; wenn Sie die Website dieses Verlags besuchen wollen, geben Sie
www.mut.de in die Adressleiste des Browsers ein. Dabei bezieht sich de auf die
Toplevel-Domäne, eine Ebene darunter befindet sich die Firmendomäne mut. Der
erste Teil www verweist auf den Webdienst in dieser Domäne.
Kapitel 6 • Namensauflösung 153
Damit Ihre Clients Domänennamen verwenden können, müssen Sie eine Methode
der Auflösung, d.h. der Zuordnung einer IP-Adresse zu einem Domänennamen
implementieren. Hier kommen der DNS-Dienst (Domain Name System, Domä-
nennamenssystem) oder die Datei hosts ins Spiel.
Wir betrachten zunächst die Verwendung der Datei hosts, da dieser Ansatz der
einfachere der beiden vorhandenen ist. Einfach gesagt, ist die Datei hosts eine
Textdatei, die auf dem lokalen Computer vorhanden ist und eine Zuordnung von
Internethostnamen zu IP-Adressen beinhaltet. Sie können die unter
Windows 2000 standardmäßig installierte Beispieldatei hosts verwenden und den
Erfordernissen Ihres Netzwerks anpassen. Das Listing 6.1 zeigt die mit
Windows 2000 installierte Datei hosts.
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost
192.168.5.1 Marketing
Wie Sie dem Listing entnehmen können, wurden zwei Einträge am Ende hinzuge-
fügt. Die IP-Adresse 127.0.0.1 ist dem Hostnamen localhost zugeordnet und wird
manchmal automatisch von Windows eingefügt. 192.168.5.1 verweist auf die Site
Marketing. Die #-Zeichen dienen der Auskommentierung von Zeilen, d.h. diese
werden von den Clients nicht verarbeitet.
Die hosts-Datei funktioniert tatsächlich so einfach, wie sie aussieht. Sie geben
einfach die IP-Adresse des Hosts ein, mit dem Sie eine Verbindung herstellen
wollen, und fügen danach – abgetrennt durch ein Leerzeichen oder einen Tab-
stopp – den Hostnamen ein. Anhand dessen kann der Client dann feststellen, wo
die IP-Adresse endet und der Hostname beginnt.
154 Namensauflösung bei IIS 5.0
Abb. 6.1: Auch der DNS-Dienst ist ein MMC-Snap-In, das Sie zur Konfiguration der
DNS-Einstellungen und -Zonen im Netzwerk verwenden
Adresszeile ein. Nun sollte die Startseite Ihrer Standardwebsite aufgerufen wer-
den. Ist dies nicht der Fall, dann probieren Sie es mit http://127.0.0.1 – damit
überprüfen Sie, ob der Server über TCP/IP angesprochen werden kann; haben Sie
hiermit Erfolg, dann liegt ein Problem mit der Namensauflösung im lokalen Netz-
werk vor. Überprüfen Sie in diesem Fall wie weiter oben beschrieben, ob in der
Datei hosts der korrekte Eintrag vorhanden ist.
Wenn Sie sich vergewissert haben, dass der lokale Computer sich mit dem Server
verbinden und Webseiten anzeigen kann, begeben Sie sich zu einem anderen Host
im Netzwerk. Öffnen Sie dort ein Browserfenster und gehen Sie die Adresse
http://www.servername.de ein, wobei servername der Name ist, den Sie für Ihren
Server gewählt haben. Erhalten Sie keinen Zugriff, dann versuchen Sie es über die
direkte Eingabe der IP-Adresse.
Wenn keine dieser Vorgehensweisen funktioniert, dann überprüfen Sie die Verbin-
dung mit dem ping-Befehl, oder verifizieren Sie die IP-Adresse des Servers über
Eingabe der Befehle ipconfig oder ipconfig /all an der Eingabeaufforderung.
ipconfig /all zeigt Ihnen die Daten aller Netzwerkadapter einschließlich der
PPP-Einwahladapter an. Zwecks erhöhter Übersichtlichkeit beschränkt sich die
Ausgabe von ipconfig auf die wesentlichen Informationen.
Je nachdem, welche Methode der Namensauflösung Sie gewählt haben – über die
Datei hosts oder über DNS –, können Sie auch die dortigen Einträge überprüfen,
um sicherzustellen, dass diese korrekt und in der richtigen Zone bzw. Datei vor-
handen sind.
Die Verbindungsmöglichkeit über das Internet lässt sich übrigens auf ähnliche
Weise überprüfen. Der ping-Befehl ist ein hervorragendes Tool zur Ursachenfor-
schung bei Verbindungsproblemen und funktioniert gleichermaßen mit IP-Adres-
sen und Domänennamen. Ich benutze den Befehl manchmal sogar, um einfach
herauszufinden, welche IP-Adresse ein Domänenname hat; wenn Sie nämlich
ping mit einem Domänennamen eingeben, dann wird immer auch die IP-Adresse
zurückgegeben (siehe Abbildung 6.2).
Wenn der Domänenname gültig ist, wird bei Ausführung von ping die aufgelöste
IP-Adresse in eckigen Klammern hinter dem eingegebenen Domänennamen
angezeigt. Wie aus Abbildung 6.2 ersichtlich, habe ich den Domänennamen com-
puter.gkcomput.local eingegeben – dies ist der Domänenname meines Servers.
Die aufgelöste IP-Adresse ist in diesem Fall 192.168.5.1.
Tipp
Wenn Sie einen Domänennamen registriert und diesen sofort einem Ser-
ver irgendwo im Internet zugewiesen haben, dann lässt er sich nicht
sofort auflösen; es kann 48 Stunden und länger dauern, bis sich die
neuen Daten ausreichend im Internet verbreitet haben – eine frustrie-
rende Erfahrung für viele Erstbenutzer von Registrierungsbehörden.
Trotzdem sollten Sie mindestens so lange warten, bevor Sie sich bei der
mit der Registrierung beauftragten Organisation beschweren.
158 Netzwerkidentität eines Computers überprüfen
Abb. 6.2: Die Eingabeaufforderung zeigt direkt nach dem Domänennamen die
zugehörige IP-Adresse (in eckigen Klammern) an
Ein anderes nützliches Tool ist nslookup. Sie finden das Programm im Unterver-
zeichnis \System32 Ihres Windows 2000-Verzeichnisses. Eine einfache Anwen-
dung von nslookup könnte so aussehen:
nslookup www.mut.de 198.164.30.2
Dieser Befehl kontaktiert den DNS-Server mit der Adresse 198.164.30.2 und for-
dert einen Eintrag für den Namen www.mut.de an. Als ich den Befehl ausführte,
erhielt ich die IP-Adresse 194.163.213.75 zurück. Mit nslookup können Sie also
überprüfen, ob die Zuordnung eines Domänennamens zur IP-Adresse in Ihrer
lmhosts-Datei korrekt ist – oder auch einfach nur, ob der Domänenname der rich-
tigen IP-Adresse zugewiesen ist.
Windows 2000 hat noch ein weiteres TCP/IP-Utility namens route im Gepäck.
Mit diesem Befehl können Sie sich den Inhalt der Routingtabelle anzeigen lassen
und diese manipulieren. Die Routingtabelle ist auf Ihrem System vorhanden,
sobald Sie TCP/IP installieren.
Die folgenden Optionen sind für den Befehl verfügbar:
• print. Startet die Ausgabe der Routingtabelle auf dem Bildschirm.
• add. Fügt der Routingtabelle eine Route hinzu.
• delete. Löscht eine Route in der Routingtabelle.
• change. Erlaubt die Modifikation eines vorhandenen Eintrags.
Der Befehl route akzeptiert ferner zwei Parameter: -f löscht alle Gateway-
Einträge in der Routingtabelle, -p wird zusammen mit dem Befehl add benutzt,
um sicherzustellen, dass die hinzugefügte Route nach einem Neustart des Servers
immer noch vorhanden ist (standardmäßig wird die Routingtabelle beim Neustart
des Servers gelöscht).
Ein paar Beispiele:
route -p add 197.168.0.20 255.255.255.0 156.34.25.0 1
Dieser Befehl fügt Ihrer Routingtabelle eine Route mit dem Ziel 197.168.0.20
und der Netzmaske 255.255.255.0 hinzu, wobei der Gateway 156.34.25.0 und
eine Metrik von 1 verwendet wird. Diese Route wird dauerhaft eingerichtet. Die
IP-Adressen sind alle frei erfunden, d.h. die Route wird wohl kaum funktionie-
ren; wir löschen sie also gleich wieder:
route delete 197.168.0.20 255.255.255.0 156.34.25.0 1
Mit diesem Befehl löschen Sie die zuvor hinzugefügte Route wieder aus der Rou-
tingtabelle.
160 Fazit
6.4 Fazit
Wir haben in diesem Kapitel einen Blick auf die verschiedenen Methoden der
Namensauflösung im lokalen Netzwerk und im Internet geworfen. Bei kleinen
Netzwerken, die nur als organisationsinterne Intranets benutzt werden, kann die
Auflösung von Hostnamen zu einer IP-Adresse über die Datei hosts erfolgen.
Wenn Sie allerdings mit Internetrechnern arbeiten, dann brauchen Sie DNS.
Wir haben die Prinzipien der IP-Adressierung betrachtet und festgestellt, dass IP-
Adressen statisch oder dynamisch zugewiesen werden können. Damit eine
Namensauflösung möglich ist, sollte Ihr IIS-Server in jedem Fall eine statische
IP-Adresse haben.
Es gibt verschiedene Wege, die korrekte Identität eines Computers in einem
TCP-/IP-Netzwerk festzustellen – darunter auch die Verwendung von IP-Adres-
sen und Domänennamen. ping ist ein fantastisches kleines Tool, wenn Sie fest-
stellen wollen, ob Ihr Rechner überhaupt eine Verbindung herstellen kann; Sie
können es auch verwenden, um die IP-Adresse herauszufinden, die einem
bestimmten Domänennamen zugewiesen ist.
Die in diesem Kapitel beschriebenen Tools und Informationen können Ihnen hel-
fen, wenn Sie sicherstellen wollen, dass Ihr IIS-Server wirklich korrekt ange-
schlossen und lauffähig ist, bevor Sie ihn der Öffentlichkeit zugänglich machen.
Kapitel 7
Anwendungen konfigurieren
Abb. 7.1: Das Paketsymbol wird für Verzeichnisse verwendet, die als
Ausgangspunkt einer Anwendung dienen
Um nun die Anwendung so konfigurieren zu können, dass sie das richtige Modell
verwendet, müssen Sie den Ausgangspunkt der Anwendung im Internetdienste-
Manager mit der rechten Maustaste anklicken und den Eintrag EIGENSCHAFTEN
im Kontextmenü auswählen. Dadurch wird das Fenster EIGENSCHAFTEN (Abbil-
dung 7.2) aufgerufen.
Wie Sie sehen, gibt es hier für den ANWENDUNGSSCHUTZ die drei oben beschrie-
benen Einstellmöglichkeiten: NIEDRIG (IIS-PROZESS), MITTEL (ZUSAMMENGE-
FASST) und HOCH (ISOLIERT).
Wenn Sie vor der Frage stehen, welche Skriptsprache Sie für Ihre Anwendung
verwenden sollen, dann achten Sie auf einfache Verwendung und – natürlich – auf
die Serverleistung. Auch wenn bereits erwähnt wurde, dass IIS mit CGI, ISAPI,
ASP und einigen anderen Skripttechniken gut zurechtkommt, so müssen Sie den-
noch die Vor- und Nachteile der einzelnen Skriptsprachen gegeneinander abwä-
gen. Sie sind in der Programmierung von CGI-Anwendungen vielleicht schon
sehr bewandert; warum denn jetzt noch ASP lernen oder statt dessen ISAPI ver-
wenden?
Die Antwort auf die erste Frage heißt Unkompliziertheit. ASP ist im Vergleich zu
PERL (Practical Extraction and Reporting Language) eine weitaus leichter zu
erlernende Sprache. PERL ist eine Interpretersprache und für das Durchsuchen
und Bewerten von Textdateien optimiert; sie ist nur leider nicht leicht zu lernen.
Mit ISAPI können Sie Multithread-DLLs erstellen, die in anderen Sprachen ver-
fasste CGI-Anwendungen locker übertrumpfen. ISAPI-Anwendungen können
prozessintern oder -extern ausgeführt werden und nutzen Win32-API-Aufrufe,
die eine weitaus höhere Leistung erbringen, als dies mit CGI-Anwendungen mög-
lich wäre.
Kapitel 7 • Anwendungen konfigurieren 165
ASP verwendet für IIS standardmäßig VBScript oder JScript. Diese Skriptspra-
chen sind leicht zu erlernen und doch extrem leistungsfähig; immerhin war der
Melissa-Virus (und auch eine Menge seiner Nachfolger) in VBScript program-
miert – das sollte Sie schon von den Möglichkeiten überzeugen, die diese Sprache
bietet.
JScript ist fast genau so einfach und auch ebenso leistungsfähig. Ferner bietet es
den Vorteil, dass Applets und Anwendungen in Java ohne große Mühe in JScript
konvertiert werden können.
Abb. 7.3: Das Dialogfeld EIGENSCHAFTEN VON MARKETING erlaubt auf der
Registerkarte VERZEICHNIS die Erstellung einer Anwendung
• Nur Skripts. Wenn Sie diese Option wählen, gestatten Sie die Ausführung von
Skripts, z.B. ASP-Skripts, Skripts in Javascript, IDC-Skripts usw. Anwendun-
gen können jedoch nicht ausgeführt werden. Auch diese Einstellung ist noch
vergleichsweise sicher, räumt den Benutzern aber ein gewisses Maß an Funk-
tionalität ein.
• Skripts und ausführbare Dateien. Diese Einstellung gestattet die Ausfüh-
rung beliebiger Skripts und Anwendungen im Verzeichnis. Dies kann ein Si-
cherheitsproblem darstellen, da auch die Ausführung solcher Anwendungen
möglich ist, die Windows-Binärdateien (etwa .dll- oder .exe-Dateien) zugeord-
net sind. Auf diese Weise könnten böswillige Clients Viren oder Trojaner in Ih-
ren Server einschleusen. Seien Sie also bei der Auswahl dieser Option
umsichtig und vergewissern Sie sich, dass Sie alle Sicherheitslücken gestopft
haben, die bei IIS vorhanden sind (d.h. schauen Sie regelmäßig auf der Website
von Microsoft nach Updates, die solche Lücken schließen).
Wenn Sie die gewünschten Ausführberechtigungen eingestellt haben, sollten Sie
den Prozess festlegen, in dem die Anwendung ausgeführt werden soll. Wir haben
die Anwendungsschutzprozesse bereits weiter oben erläutert; treffen Sie also im
Listenfeld ANWENDUNGSSCHUTZ Ihre Wahl.
Kapitel 7 • Anwendungen konfigurieren 167
Wie Sie sehen, sind hier doch so einige Erweiterungen und Dateinamen und -
pfade aufgelistet. Beachten Sie insbesondere den vierten Eintrag von oben: Hier
finden Sie eine Programmbibliothek namens asp.dll vor, die die Funktionalität
oder Anwendung bereitstellt, die zur Verarbeitung aller Anfragen betreffend
Active Server Pages auf Ihrem Server benötigt werden.
168 Zuordnungen vornehmen
Warnung
Wenn Sie sich nicht vollkommen sicher sind, wofür die hier gezeigten
Anwendungen und Programmbibliotheken benötigt werden, sollten Sie
die Standardzuordnungen nicht ändern. Sie können natürlich jederzeit
eigene Zuordnungen hinzufügen, um Ihre benutzerdefinierten Anwen-
dungen zu verwalten, aber für die meisten Zwecke sollten die Standard-
einstellungen ausreichend sein.
Abb. 7.5: Die ASP-Anwendungseinstellungen für Ihren Server konfigurieren Sie auf
der Registerkarte ANWENDUNGSOPTIONEN
Fragen Sie bei Ihren ASP-Entwicklern nach und überprüfen Sie die Surfgewohn-
heiten Ihrer Benutzer, um zu entscheiden, ob und welcher Wert für den
SITZUNGSTIMEOUT eingestellt werden sollte (Standard: 20 Minuten). Nach
Ablauf dieser Zeit endet die Sitzung, wenn der Benutzer die Seite nicht aktuali-
siert oder neue Anfragen gestellt hat.
Die nächste Option heißt PUFFER AKTIVIEREN. Der Puffer wird auf dem Webser-
ver benötigt, um den Inhalt der ASP-Seite im Serverspeicher zu halten, bis die
Ausgabedaten vollständig gesammelt und zur Sendung bereit sind. Der Server
sendet die Daten dann an den Browser des Clients. Wenn diese Option deaktiviert
ist, werden die Ausgabedaten sofort bei Eintreffen an den Client gesandt.
Die Option ÜBERGEORDNETE PFADE AKTIVIEREN aktiviert bei ASP-Seiten die
Verwendung eines relativen Pfades zu einer Datei, einem Verzeichnis oder dem
übergeordneten Verzeichnis. Mit dieser Einstellung kann ein Sicherheitsproblem
verbunden sein: Wenn Sie für das übergeordnete Verzeichnis die Berechtigung
Ausführen erteilt haben, könnte über ein böswilliges Skript eine unbefugte
Anwendung in diesem Verzeichnis ausgeführt werden.
Im Textfeld ASP-STANDARDSPRACHE befindet sich der Name der Skriptsprache,
die Sie als Standardskriptsprache auf Ihrem Server verwenden wollen. ASP kann
sowohl auf VBScript als auch auf JScript fußen; welche der beiden Möglichkeiten
Sie hier eintragen sollen, müssen Sie bei Ihren Webdesignern erfragen. Die
Skriptbereiche auf einer Webseite sind zwischen den Tags <% und %> angegeben;
sie werden dem Client nicht gezeigt, wenn die Seite an ihn gesandt wird. Wenn
Ihre Webdesigner im HTML-Code keine Skriptsprache explizit erwähnen (in der
Art <%@ LANGUAGE="VBSCript" %> oder <% @LANGUAGE="JScript" %>), dann schaut
der Server bei Bedarf an dieser Stelle nach, welche Sprache bei der Ausführung
einer ASP-Seite verwendet werden soll.
Hinweis
Wenn Sie als Standardsprache VBScript gewählt haben, so bedeutet dies
nicht, dass Ihre Webentwickler JScript nicht mehr auf dem Server bzw.
auf dieser Seite verwenden dürfen. VBScript und JScript können durch-
aus im gleichen HTML-Dokument koexistieren.
Als letzte Option finden Sie auf der Registerkarte ANWENDUNGSOPTIONEN noch
die Einstellung ASP-SKRIPTTIMEOUT. Hier beträgt der Standardwert 90 Sekunden,
Sie können ihn aber in einem Bereich zwischen 1 und 2.147.483.647 Sekunden
einstellen. Ich persönlich glaube ja, dass Sie bei einem Skript, das für die Ausfüh-
rung so viel Zeit benötigt, über eine Überarbeitung nachdenken sollten.
Der hier gewählte Wert dient der erzwungenen Beendigung eines nicht beendeten
Skripts; in diesem Fall wird auch ein Ereignis im Ereignisprotokoll erzeugt, das
Sie sich mit der Ereignisanzeige ansehen können. Wenn Sie sehr aufwändige
Skripts erstellt haben, deren Ausführung offensichtlich nicht abgeschlossen wird,
dann sollten Sie diesen Wert erhöhen.
170 Zuordnungen vornehmen
<head>
<meta http-equiv="Content-Language" content="en-ca">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Home Page</title>
</head>
<body>
<!- #include file="navbar.stm" ->
<h1 align="center"><b>Dies ist die Homepage</b></h1>
<hr>
Kapitel 7 • Anwendungen konfigurieren 171
<%
Dim dbGK
Set dbGK = Server.CreateObject("Datenbank")
%>
Abb. 7.6: Der Internet Explorer zeigt einen Teil der Fehlermeldung an, die an den
Server zurückgesandt wurde. In diesem Fall waren detaillierte
Fehlermeldungen aktiviert.
Wenn Sie im Listing bis zur Zeile 18 zählen, finden Sie den Code Set dbGK =
Server.CreateObject ("Datenbank"). Diese Zeile bewirkt, dass das ASP-Skript
auf dem Server ein Objekt zu erstellen versucht, um die Datenbank zu repräsen-
tieren. Schade, dass auf dem Server kein gültiger Datenquellenname vorhanden
ist – voilà, schon haben wir unseren Fehler.
Dem durchschnittlichen Webbenutzer mag die Fehlermeldung ein wenig kryp-
tisch erscheinen. Sie können statt dessen auch eine allgemeine Fehlermeldung
senden; markieren Sie die Option FEHLERMELDUNG ALS TEXT AN CLIENT SEN-
DEN und geben Sie den gewünschten Text der Fehlermeldung in das Textfeld ein.
Ihre Benutzer werden dann gegebenenfalls eine Fehlermeldung sehen, die ihnen
mitteilt, dass irgendetwas beim Server schief gelaufen ist; in diesem Fall langwei-
len und verwirren Sie sie nicht mit den detaillierten ASP-Fehlermeldungen.
172 Anwendungen isolieren
Warnung
Es scheint also so, als sollte man alle Anwendungen in einem separaten
Speicherbereich ausführen lassen und den Anwendungsschutz Hoch
wählen. Das stimmt in der Tat bei Servern, auf denen maximal zehn
Anwendungen ausgeführt werden; bei allen anderen jedoch wird die
Leistung zu stark beeinträchtigt.
Hinweis
Wenn Sie SSI- oder IDC-Anwendungen ausführen, dann müssen diese
im selben Prozess ablaufen wie IIS, d.h. es muss für diese Anwendungen
der Anwendungsschutz Niedrig (IIS-Prozess) eingestellt werden.
Wie aus Abbildung 7.7 ersichtlich ist, enthält das Dialogfeld eine zusätzliche
Registerkarte, die für das Basisverzeichnis einer Website auf dem Server nicht
vorhanden war. Die Registerkarte PROZESSOPTIONEN ermöglicht es Ihnen, einen
Timeout-Wert für CGI-Skripts zu setzen. Wie bereits gesagt, betrifft diese Ein-
stellung den gesamten Server mit allen darauf abgelegten Websites.
Der Standardwert liegt bei 300 Sekunden. Microsoft hat nirgends eine Ober-
grenze für diesen Parameter angegeben, insofern lässt sich theoretisch einstellen,
dass ein Skript niemals abläuft. Was natürlich nicht empfehlenswert ist.
Tipp
Aus Gründen der Leistungsoptimierung sollten Sie das Kontrollkästchen
ISAPI-ANWENDUNGEN ZWISCHENSPEICHERN immer aktiviert lassen. Es kann
allerdings Situationen geben – etwa wenn Sie Anwendungen testen oder
einen Webserver debuggen –, in denen Sie die Markierung vorüberge-
hend aufheben können.
Tipp
Wenn die Schaltfläche abgeblendet dargestellt ist und nicht bedient wer-
den kann, dann weist das darauf hin, dass Sie sich derzeit nicht am Aus-
gangspunkt der Anwendung befinden; wählen Sie also zuerst das
Verzeichnis aus, das als AUSGANGSPUNKT angezeigt wird.
176 ASP-Anwendungen konfigurieren
7.8 ASP-Debugging
Wie Ihnen jeder Entwickler bestätigen wird, ist die Fehlerbereinigung (neu-
deutsch: »Debuggen«) ein wesentlicher Faktor der Entwicklung von Softwarean-
wendungen, den man aber immer wieder gerne vor sich herschiebt. ASP-Ent-
wicklern geht es nicht viel anders. Das Ergebnis: In Ihren ASP-Skripts befinden
sich Fehler. Bevor Sie also ein Skript an die Öffentlichkeit gelangen lassen, soll-
ten Sie erst einmal die Debugfunktion aktivieren, um diese Fehler zu finden.
ASP verwendet zur Fehlersuche in Ihrem ASP-Code den Microsoft Skript-
Debugger. Öffnen Sie das Dialogfeld EIGENSCHAFTEN des Servers oder der Web-
site, für die Sie die Fehlerbereinigung aktivieren wollen, und wählen Sie dort die
Registerkarte BASISVERZEICHNIS. Klicken Sie auf die Schaltfläche KONFIGURA-
TION im Abschnitt ANWENDUNGSEINSTELLUNG, aktivieren die Registerkarte
DEBUGGEN DER ANWENDUNG und markieren das Optionsfeld ASP-SERVERBA-
SIERTES SKRIPTDEBUGGEN AKTIVIEREN.
Warnung
Aus Sicherheitsgründen leitet der Server bestimmte Sonderzeichen nicht
an Ihre Anwendung weiter. Es sind dies die Zeichen |(,;%< und >.
7.10 ISAPI-Filter
ISAPI-Filter sind Anwendungen, die auf dem Server liegen und durch Ereignisse,
die aufgrund von HTTP-Anforderungen entstehen, aufgerufen werden bzw. auf
diese reagieren. Sie können einen Filter einem Ereignis zuweisen; sobald das
Ereignis eintritt, wird die Anwendung aufgerufen und der Filter verarbeitet.
Ein denkbarer Anwendungsfall für einen bestimmten Filtertyp ist die Bereitstel-
lung der Datenverschlüsselung und -entschlüsselung vor dem Senden bzw. Emp-
fangen von Daten.
Sie können zwei verschiedene Filtertypen anwenden. Obwohl diese offiziell nicht
so heißen, bezeichne ich sie als globale und lokale Filter. Diese Filter können auf
ähnliche Weise agieren wie die globalen und lokalen Berechtigungen für NTFS-
Laufwerke.
Die Filter werden zuerst global und dann lokal angewandt. Sie werden auf diese
Weise vermischt und gelten dann für die Website, die die Anforderung verarbei-
tet.
Um einen ISAPI-Filter verwenden zu können, müssen Sie ihn zunächst dem
gewünschten Webserver oder der gewünschten Website hinzufügen. Öffnen Sie
zu diesem Zweck den Internetdienste-Manager und rufen Sie das Dialogfeld
EIGENSCHAFTEN der gewünschten Site auf. Wählen Sie dann die Registerkarte
ISAPI-FILTER (Abbildung 7.9).
Wenn Sie auf die Schaltfläche HINZUFÜGEN klicken, können Sie den Namen und
die ausführbare Datei eines ISAPI-Filters festlegen. Wenn Sie mehr als einen Fil-
ter installiert haben, können Sie zudem die Priorität (Reihenfolge der Abarbei-
tung) ändern, indem Sie einen Filter in der Liste wählen und ihn dann mit den
links vorhandenen Pfeilschaltflächen nach oben oder unten verschieben.
Hinweis
ISAPI-Filter werden immer im gleichen Prozess ausgeführt wie IIS.
7.11 Fazit
IIS 5.0 erlaubt Ihnen die Verwendung einer Vielzahl von Anwendungen auf Ihrem
Server. Dadurch, dass IIS die Verwendung von CGI-Anwendungen in Sprachen
wie PERL gestattet, erleichtert er den Übergang von UNIX-basierten Webumge-
bungen zu IIS.
Kapitel 7 • Anwendungen konfigurieren 179
Abb. 7.9: Auf der Registerkarte ISAPI-FILTER können Sie ISAPI-Filter hinzufügen und
entfernen sowie die Verarbeitungsreihenfolge ändern
Indem Microsoft die ASP-Unterstützung in IIS integriert hat, hat das Unterneh-
men einen großen Schritt bei der Vereinfachung der Anwendungsentwicklung
unternommen. ASP ist eine im Vergleich zu CGI wesentlich unkomplizierter zu
handhabende Technologie, denn ASP gestattet die Anwendungsentwicklung in
VBScript oder JScript.
Mit den Informationen, die Sie in diesem Kapitel erhalten haben, können Sie Ihre
Anwendungen so konfigurieren, dass diese sicher und effizient auf Ihrem IIS-
Server ausgeführt werden.
Kapitel 8
Sicherheit
Eines der wichtigsten Themen, mit denen wir Webadministratoren uns heutzutage
befassen müssen, ist die Sicherheit. Dank des Einflusses, den Microsoft auf die
Computerindustrie und nun auch auf das Internet hat, gibt es unzählige Hacker,
die tagaus, tagein nichts besseres zu haben, als Microsoft und seine Produkte zu
diskreditieren, indem sie in IIS-Server und Anwendungen eindringen. Aufgrund
dieser Tatsache ist dieses Kapitel das wahrscheinlich wichtigste in diesem Buch.
rator arbeiten (sofern Sie diesen Posten nicht selbst bekleiden). Außerdem müs-
sen Sie sicherstellen, dass öffentlich zugängliche und einschränkte Daten in sepa-
raten Ordnern abgelegt werden.
Die meisten Clients werden mit Hilfe des Kontos IUSR_Computername auf den
Server zugreifen. Dieses Konto ordnet die Zugriffsberechtigungen und das Kenn-
wort dem Konto Gast auf dem Windows 2000-Server zu. Standardmäßig wird das
Konto bei der Installation von IIS deaktiviert – und das sollte auch so bleiben.
Jedes Konto, das Zugriff auf eingeschränkte Ordner benötigt, sollte als lokale
Gruppe auf dem Server mit den entsprechenden Berechtigungen konfiguriert wer-
den. Auf diese Weise können Benutzerkonten, die auf die eingeschränkten Res-
sourcen zugreifen müssen, zu Mitgliedern dieser Gruppe gemacht werden – das
macht die Administration einfacher.
Diese Checkliste ist ein guter Ausgangspunkt für die Konfiguration der Sicher-
heit. Vielleicht fallen Ihnen noch ein paar weitere Punkte ein, möglicherweise
treffen aber auch nicht alle in Tabelle 8.1 aufgeführten Punkte auf Ihre Umgebung
zu.
8.3 Authentifizierung
Der Begriff »Authentifizierung« bezeichnet den Vorgang, bei dem Clients oder
Benutzer dem Server beweisen, dass sie diejenigen sind, die sie zu sein behaup-
ten. Dieser Beweis erfolgt mit Hilfe einer Kombination aus einem Benutzernamen
und einem Kennwort. In Zukunft werden vielleicht andere Methoden hierfür
Verwendung finden, so etwa eine Stimmerkennung oder – für die standortinterne
Verwendung -biometrische Lösungen. Nur authentifizierte Benutzer und Clients
können auf den Server zugreifen.
Die Authentifizierung kann bei IIS auf der Ebene der Website, eines Verzeichnis-
ses oder einer Datei erfolgen. Auf diese Weise können Sie den öffentlichen
Bereich einer Website freigeben und nur für bestimmte Ordner oder Dateien, die
vertrauliche Daten enthalten, eine Authentifizierung verlangen.
IIS verwendet fünf Authentifizierungstypen:
• Anonym. Dies ist die normale Authentifizierungsmethode für die meisten
Websites und die Standardverzeichnisse auf FTP-Servern. Benutzer müssen
hier in der Regel keine Kombination aus Benutzernamen und Kennwort einge-
ben. Bei manchen FTP-Diensten werden jedoch der Benutzername anonymous
und eine gültige E-Mail-Adresse als Kennwort angefordert.
• Standardauthentifizierung. Diese Methode verwendet zur Benutzerauthenti-
fizierung eine Kombination aus Benutzernamen und Kennwort. Die Methode
weist allerdings einen schwerwiegenden Nachteil auf, denn das Kennwort wird
unverschlüsselt übertragen. Ein Hacker könnte dieses Kennwort abfangen und
es später für einen Zugriff auf Ressourcen verwenden, die für diese Benutzer-
name/Kennwort-Kombination freigegeben sind.
• Digestauthentifizierung. Hierbei handelt es sich um eine unter IIS 5.0 neue
Methode, die einen anderen Ansatz verfolgt. Die Digestauthentifizierung ver-
arbeitet die Benutzerinformationen mit einem Hash-Algorithmus. Dieser ist
nicht umkehrbar und führt immer zu einem anderen Ergebnis.
• Integrierte Windows-Authentifizierung. Diese Methode ist identisch mit
NTML. Hierbei wird keine Benutzername/Kennwort-Kombination über das
Netzwerk gesendet, sondern der Client muss im Rahmen eines kryptografi-
schen Vorgangs nachweisen, dass er das Kennwort kennt. Diese Methode kann
auch das neue Protokoll Kerberos V 5 verwenden.
186 Authentifizierung
Nun können Sie mit der Zuweisung von Berechtigungen im Abschnitt BERECHTI-
GUNGEN beginnen. Dabei stehen die folgenden Optionen bereit:
• Vollzugriff. Hiermit erhält das Konto vollen Zugriff auf den Ordner, d.h. der
Benutzer kann Dateien und Ordner nach Belieben hinzufügen, entfernen und
ändern und außerdem die Attribute des Ordners modifizieren oder ihn in Besitz
nehmen. Aus offenkundigen Gründen sollte diese Berechtigung nur Adminis-
tratoren erteilt werden.
• Ändern. Erlaubt es Benutzern, den Ordnerinhalt zu betrachten und den Ordner
zu modifizieren. Die Attribute des Ordners hingegen können nicht geändert
werden.
• Lesen, Ausführen. Erlaubt es Benutzern, den Ordnerinhalt zu betrachten und
Anwendungen auszuführen, die im Ordner vorhanden sind. Weder der Ordner
noch sein Inhalt können gelöscht oder anderweitig modifiziert werden.
• Ordnerinhalt auflisten. Erlaubt es Benutzern, den Ordnerinhalt im Windows-
Explorer oder nach Eingabe des Befehls dir an der Eingabeaufforderung zu be-
trachten. Anwendungen können nicht ausgeführt werden. Weder der Ordner
noch sein Inhalt können gelöscht oder anderweitig modifiziert werden.
188 Authentifizierung
Abb. 8.2: Das Dialogfeld BENUTZER, COMPUTER ODER GRUPPEN AUSWÄHLEN listet alle
im Netzwerk verfügbaren Konten auf, für die Sie Zugriffsberechtigungen
definieren können
• Lesen. Erlaubt es Benutzern, den Ordner und seinen Inhalt zu betrachten und
Dateien im Ordner mit einer zugeordneten Anwendung zu öffnen. Beispiels-
weise kann ein Benutzer Dokumente der Typen .doc oder .rtf mit Microsoft
Word öffnen.
• Schreiben. Erlaubt es Benutzern, Dateien in den Ordner zu kopieren oder vor-
handene Dateien zu löschen.
Klicken Sie nun auf der Registerkarte SICHERHEITSEINSTELLUNGEN des Dialog-
feldes EIGENSCHAFTEN auf die Schaltfläche ERWEITERT, um das Dialogfeld
ZUGRIFFSEINSTELLUNGEN aufzurufen (Abbildung 8.3).
Die erste Registerkarte dieses Dialogfeldes befasst sich mit kontenspezifischen
Berechtigungen. Die Spalten listen nacheinander den Berechtigungstyp (ZULAS-
SEN oder VERWEIGERN), den Kontonamen, die Berechtigung und den Anwen-
dungsbereich (Ordner, Unterordner oder Dateien) auf.
Kapitel 8 • Sicherheit 189
Mit den Schaltflächen unter dem Listenfeld können Sie Konten hinzufügen oder
entfernen und deren Berechtigungen bearbeiten. Die beiden Kontrollkästchen
unten auf der Registerkarte ermöglichen Ihnen, vererbbare Berechtigungen von
übergeordneten Objekten zu übernehmen (sofern das selektierte Konto einem
anderen Objekt untergeordnet ist) und die Berechtigungen für untergeordnete
Objekte zurückzusetzen.
Auf der Registerkarte ÜBERWACHUNG finden Sie eine Liste zu überwachender
Konten vor. Diese Überwachung kann praktisch sein, wenn Sie herausfinden wol-
len, auf welche Ressourcen ein bestimmtes Konto zugreift.
Die Registerkarte BESITZER (Abbildung 8.4) erlaubt Ihnen, den Besitzer eines
Objekts oder einer Ressource zu betrachten und – sofern Sie über die entspre-
chenden Rechte verfügen – auch zu ändern.
Alle bislang erwähnten Einstellungen beziehen sich auf die Windows 2000-
Zugriffsberechtigungen für die beschriebenen Ressourcen. Da diese Einstellun-
gen nicht speziell für IIS gelten, werden wir das Thema nicht eingehender behan-
deln; wenden Sie sich bei Konfigurationsfragen vertrauensvoll an Ihren Netzwer-
kadministrator. Aus der Sicht von IIS befinden sich die wesentlichen
Sicherheitsfunktionen, mit denen wir uns befassen müssen, auf der Registerkarte
SICHERHEITSEINSTELLUNGEN im Dialogfeld EIGENSCHAFTEN eines Ordners.
190 Authentifizierung
8.4 Zugriffssteuerung
Wenn Sie IIS unter Windows 2000 als Webserver im Internet betreiben, dann
spielt die Zugriffssteuerung in der Regel keine Rolle. Wenn Sie wollen, dass der
Besuch Ihrer Web- und FTP-Sites für Ihre Besucher zu einem angenehmen Erleb-
nis wird (und diese Besucher regelmäßig wiederkommen), dann sollten Sie den
anonymen Zugriff aktivieren – insbesondere, wenn Sie eine E-Commerce-Site
betreiben.
Es gibt auch Unternehmen, die Webserver betreiben, damit ihre Mitarbeiter oder
Geschäftspartner über das Internet auf vertrauliche Daten zugreifen können. Ohne
den Einsatz angemessener Sicherheitsmaßnahmen ist zwar von einem solchen
Vorgehen abzuraten, aber schließlich geht es in diesem Kapitel um die Implemen-
tierung genau dieser Maßnahmen. Und letztendlich besteht der Sinn einer solchen
Nutzung des Internets doch darin, die kostenintensivere Variante gemieteter Netz-
leitungen zu umgehen.
Von Authentifizierungsmethoden war bereits die Rede. Zugriffssteuerung und
Authentifizierung müssen miteinander Hand in Hand arbeiten – bei der Zugriffs-
steuerung geht es im Wesentlichen darum, zu regeln, wer auf Ihre Site Zugriff hat.
Eine der am meisten verwendeten Steuerungsmethoden für Web- und FTP-Sites
ist der anonyme Zugriff. Benutzer, die sich mit dieser Zugriffsmethode anmelden,
können nur auf diejenigen Bereiche der Site zugreifen, die Sie entsprechend kon-
figuriert haben.
Bei der Installation erstellt IIS ein Benutzerkonto namens IUSR_computername,
wobei computername der Name des Servers ist. Das Konto entnimmt seine Daten
dem Konto Gast, das in der Windows 2000 SAM-Datenbank vorhanden ist. Auf
diese Weise können Benutzer nicht auf alle Dateien und Ressourcen auf Ihrem
Server zugreifen. FTP-Verzeichnisse können von anonymen Benutzern zwar
gesehen werden, aber wenn Sie für bestimmte Verzeichnisse eine Zugriffssteue-
rung konfiguriert haben, dann dürfen sie den Inhalt der Verzeichnisse nicht
betrachten.
Wie im Verlaufe dieses Buches bereits erwähnt wurde, ist WebDAV ein Bestand-
teil von IIS 5.0. WebDAV ermöglicht den Remotezugriff auf Laufwerke, Ordner
und Dateien auf dem Server über das Internet. Wenn die Zugriffseinstellungen
dieses Bereichs nicht angemessen konfiguriert sind, dann sind Eindringlingen Tür
und Tor geöffnet. Weitere Informationen zur Konfiguration von WebDAV auf
Ihrem Server finden Sie in Kapitel 5.
Warnung
WebDAV kann sowohl auf FAT- als auch auf NTFS-formatierten Datenträ-
gern eingesetzt werden. Sie müssen allerdings FAT-formatierten Festplat-
ten verstärkt Aufmerksamkeit schenken, da auf der Dateiebene keine
Sicherheitsfunktionen vorhanden sind.
Kapitel 8 • Sicherheit 193
Abbildung 8.7 zeigt den Ablauf der Zugriffssteuerung. Dabei wurden die Stan-
dardsymbole für Flussdiagramme verwendet.
Clientanforderung
Nein
IP zugelassen?
Ja
Nein
Benutzer zugelassen?
Ja Zugriff verweigert
Nein
Webserver-Berechtigungen?
Ja
Nein
NTFS-Berechtigungen?
Ja
Zugriff gewährt
Abb. 8.7: Dieses Flussdiagramm zeigt Ihnen den Ablauf der Zugriffssteuerung
In den folgenden Abschnitten wird im Detail erläutert, wie Sie diese Zugriffsbe-
schränkungen konfigurieren.
[laufwerk:] bezieht sich dabei auf das zu konvertierende Laufwerk, also etwa c:.
Der Schalter /fs:ntfs teilt dem Programm schlicht und einfach mit, dass Sie eine
Konvertierung zu NTFS beabsichtigen. Die Option /v können Sie weglassen; sie
aktiviert lediglich den ausführlichen Modus (engl. »verbose«), der bei der Kon-
vertierung die entsprechenden Meldungen anzeigt.
Sie werden dann aufgefordert, den Server neu zu starten, um die Konvertierung
auszuführen. Die Konvertierung findet während des Neustarts statt – gehen Sie
also in Ruhe eine Tasse Kaffee trinken. Nach Abschluss des Vorgangs verfügen
Sie über wesentlich bessere Möglichkeiten zur Absicherung Ihrer Dateien und
Ordner.
Wenn Sie die NTFS-Sicherheitsfunktionen für Ihre Verzeichnisse und Dateien
einstellen wollen, müssen Sie über den Windows-Explorer oder den ARBEITS-
PLATZ darauf zugreifen. Klicken Sie also mit der rechten Maustaste auf das Ver-
zeichnis oder die Datei, für die Sie NTFS-Berechtigungen setzen wollen, und
wählen Sie dann aus dem Kontextmenü den Eintrag EIGENSCHAFTEN. Abbildung
8.8 zeigt die Registerkarte SICHERHEITSEINSTELLUNGEN des Dialogfeldes EIGEN-
SCHAFTEN VON MARKETING (d.h. das nachfolgende Beispiel bezieht sich auf
unsere Website Marketing).
Das Dialogfeld kommt Ihnen vielleicht bekannt vor; wir sahen es bereits weiter
oben in diesem Kapitel im Abschnitt »Authentifizierung implementieren und
konfigurieren« (siehe Abbildung 8.1). Das Listenfeld NAME oben auf der Regis-
terkarte listet die Konten auf, denen mindestens eine Berechtigung für die Res-
source (in diesem Fall der Ordner Marketing) erteilt wurde. Sie können über die
entsprechenden Schaltflächen Konten hinzufügen oder entfernen.
Kapitel 8 • Sicherheit 195
Abb. 8.8: Auf der Registerkarte SICHERHEITSEINSTELLUNGEN können Sie die NTFS-
Berechtigungen für Ordner und Dateien einstellen
Warnung
Bei der Zuweisung der Berechtigung Lesen, Ausführen muss ein wichti-
ger Punkt beachtet werden. Wie bereits erwähnt, ermöglicht dies dem
Benutzer, Anwendungen auszuführen, die im Verzeichnis gespeichert
196 Zugriffssteuerung
Warnung
Wenn Sie unter Windows 2000 einen Ordner oder eine Datei erstellen,
wird der Gruppe Jeder die Berechtigung Vollzugriff auf diese Ressource
erteilt. Das bedeutet, dass, sofern Sie keine Zugriffsberechtigungen für
die Ressource konfigurieren, alle Benutzer die Ressource lesen, betrach-
ten, löschen und ändern oder sie in Besitz nehmen können. Die einzel-
nen Berechtigungen werden weiter unten erläutert.
Kapitel 8 • Sicherheit 197
Die Tabelle 8.2 zeigt die Fähigkeiten der einzelnen Berechtigungen an, die Sie für
Ressourcen auf dem Server erteilen können. Bestimmen Sie anhand der Tabelle,
welche Berechtigungen für Ihre Web- und FTP-Sites erteilt werden müssen.
In Abbildung 8.10 sehen Sie drei Einträge, für die der Zugriff auf meinen Server
verweigert wird. Der erste Eintrag betrifft alle Computer oder Benutzer aus der
Domäne netmail.com. Benutzer, bei denen dieser Domänenname in den Anmel-
deinformationen auftaucht, dürfen also auf meinen Server nicht zugreifen.
Hinweis
Ich muss gestehen, dass ich nicht überprüft habe, ob der Domänenname
netmail.com existiert; falls dies der Fall sein sollte, so sei gesagt, dass ich
weder der Domäne noch ihrem Betreiber gegenüber negative Gefühle
hege. Der Name wurde lediglich zu Demonstrationszwecken verwendet.
Abb. 8.11: Das Dialogfeld ZUGRIFF VERWEIGERN FÜR mit den drei
Optionsmöglichkeiten für die Zuweisung von Zugriffsbeschränkungen
Die erste Option wird für die Verweigerung des Zugriffs durch einen einzigen,
durch seine IP-Adresse identifizierten Computer benutzt. Sie können hier die
IP-Adresse des Computers eingeben, der keinen Zugriff erhalten soll, oder Sie
führen über DNS-SUCHE einen DNS-Lookup aus – in diesem Fall sucht
Windows 2000 nach einem DNS-Server, um die IP-Adresse aufzulösen.
200 Zugriffssteuerung
Die zweite Option MEHRERE COMPUTER ändert das Aussehen des Dialogfeldes
ein wenig, wie aus Abbildung 8.12 ersichtlich.
Abb. 8.12: Die Option MEHRERE COMPUTER erlaubt die Eingabe einer Netzwerk-ID
und einer Subnetzmaske
Mit dieser Option können Sie den Zugriff basierend auf der Netzwerkadresse und
der Subnetzmaske beschränken. Dies ist die beste Möglichkeit, eine ganze
Gruppe von IP-Adressen von Ihrem Server auszusperren.
Die dritte Option gestattet die Konfiguration einer Beschränkung anhand des voll-
ständig qualifizierten Domänennamens.
Mit jeder dieser drei Methoden können Sie den Zugriff auf Ihren Server steuern.
Hinweis
Wenn Sie keinerlei Sicherheitseinstellungen für die Ordner und Dateien
auf Ihrer Website konfiguriert haben und nun die beschriebenen Zugriffs-
beschränkungen anwenden, dann erben diese Ordner und Dateien die
Sicherheitseinstellungen der Web- bzw. FTP-Site.
8.4.4 Webserverberechtigungen
Wir haben bislang eine Menge über NTFS-Berechtigungen geredet. Im folgenden
Abschnitt nun geht es um Webserverberechtigungen. Es gibt einen Unterschied
zwischen diesen beiden Berechtigungsarten, und den sollten Sie kennen.
NTFS-Berechtigungen werden auf gültige Windows 2000-Benutzerkonten ange-
wandt. Wenn einer Ihrer Benutzer auf Ihren Server zugreift und dazu ein Konto
benutzt, das auf diesem Server gespeichert ist, dann erfolgt die Zugriffssteuerung
für diesen Benutzer auf der Basis der NTFS-Berechtigungen.
Die meisten Benutzer, die auf einen Webserver zugreifen, tun dies jedoch über
das Internet – mit anonymer Anmeldung. Mit anderen Worten, wenn ein Benutzer
Kapitel 8 • Sicherheit 201
auf öffentlich zugängliche Webseiten zugreifen will, dann muss er keine Kombi-
nation aus Benutzernamen und Kennwort eingeben. Dieser anonyme Zugriff
macht sich das Spezialkonto IUSR_computername auf dem Server zunutze. Auf
meinem Server heißt dieses Konto IUSR_computer.
Hinweis
Wenn Sie für ein und dieselbe Ressource sowohl Webserver- als auch
NTFS-Berechtigungen zugewiesen haben, dann wird die restriktivere
dieser beiden Berechtigungsarten angewandt.
Abb. 8.13: Auf der Registerkarte BASISVERZEICHNIS können Sie die Optionen für die
Webserverberechtigungen konfigurieren
202 Zugriffssteuerung
Wenn Sie alle notwendigen Einstellungen vorgenommen haben, klicken Sie auf
die Schaltfläche OK, um sie zu übernehmen.
Warnung
Manchmal beinhalten ASP-Skripts die Benutzung von Kennwörtern, die
unverschlüsselt angezeigt werden. Beachten Sie dies bei der Aktivierung
der Berechtigung Skriptzugriff, da Kennwörter auf diese Weise im Skript
sichtbar werden.
dann könnte er in meinen Server eindringen und sich diese – privaten – Daten wie
etwa Großhandelspreise oder Preisaufschläge ansehen.
Aus Gründen wie diesem muss man seine Datenbank und die zugehörigen
Dateien schützen. Die verschiedenen Methoden, die zur Absicherung einer
Datenbank und der zugehörigen Daten vorhanden sind, werden im Folgenden
beschrieben.
Verwenden Sie in jedem Fall alle Sicherheits- und Autorisierungsfunktionen, die
Ihnen Ihre Datenbank anbietet. SQL beispielsweise kann den Benutzer zur Ein-
gabe eines gültigen Benutzernamens und eines Kennworts auffordern. Wenn Sie
Ihre Daten schützen wollen, ohne Benutzer, die Ihre Site mit einem Browser
durchstöbern, mit solchen Eingaben zu belasten, dann können Sie den Benutzer-
namen und das Kennwort in einer ASP-Skriptdatei ablegen. Beachten Sie aber,
dass dies keine hundertprozentige Lösung ist, denn ASP-Skripts speichern diese
Daten unverschlüsselt.
Wie Sie bereits weiter oben gesehen haben, können Sie Ihre Dateien mit NTFS-
Berechtigungen schützen.
Der Datenbankzugriff auf einem Webserver verlangt die Verwendung eines DSN
(Data Source Name, Datenquellenname). Stellen Sie sicher, dass die Datei, die
den DSN enthält, sicher vor unberechtigtem Zugriff geschützt ist, denn sie enthält
den Benutzernamen und das Kennwort für den Datenbankzugriff.
Es wurde bereits erwähnt, dass ASP-Skripts den Benutzernamen und das Kenn-
wort unverschlüsselt enthalten. Sie können trotzdem sicherstellen, dass diese
Dateien geschützt sind. Ich empfehle Ihnen, Ihre ASP-Skriptdateien in eine
COM-Komponente zu konvertieren und diese für den Datenbankzugriff zu ver-
wenden. Weitere Informationen zu COM-Komponenten finden Sie im IIS-Soft-
ware Development Kit.
Mit diesen Methoden können Sie garantieren, dass Ihre Daten sicher auf dem Ser-
ver liegen, ohne den Zugriff Unbefugter befürchten zu müssen.
8.5 Verschlüsselung
Wenn in Zusammenhang mit IIS von Verschlüsselung die Rede ist, dann ist damit
nicht die Möglichkeit gemeint, Daten oder Dateien auf dem Server zu verschlüs-
seln. Statt dessen bezeichnet Verschlüsselung in diesem Kontext die Verwendung
von SSL (Secure Sockets Layer) zur Verschlüsselung von Daten, bevor diese über
ein Netzwerk – sei es ein Intranet oder das Internet – verschickt werden.
Natürlich wollen wir dabei nicht die Daten öffentlich verfügbarer Websites ver-
schlüsseln, denn die dabei auftretende Mehrbelastung ist sehr hoch, und nicht alle
Clients unterstützen die Verschlüsselung. Wenn allerdings ein Außendienstmitar-
beiter Ihrer Firma über das Internet eine Verbindung zur Website herstellt, um
Kapitel 8 • Sicherheit 205
vertrauliche Daten einzugeben, dann werden Sie in diesem Fall ganz sicher eine
Verschlüsselung wünschen, um sicherzustellen, dass niemand spioniert.
Um die Verschlüsselung besser veranschaulichen zu können, möchte ich Ihnen
kurz ein paar Hintergrundinformationen geben.
In ihrer grundlegenden Form besteht die Kunst der Verschlüsselung darin, Infor-
mationen derart durcheinander zu bringen, dass sie für niemanden mit Ausnahme
des anvisierten Empfängers verständlich sind. Die ersten Versuche auf diesem
Gebiet wurden während der diversen Kriege vorgenommen. Sender und Empfän-
ger verständigten sich über eine Kodierungsmethode für Mitteilungen, damit
diese jedem Leser, der den Code nicht kannte, völlig sinnlos erschienen. Diese
frühen Codes waren meist mathematischer Natur, d.h. wenn der Absender seine
Nachricht kodierte, dann wandte er eine mathematische Formel an, um die Rei-
henfolge der Buchstaben zu ändern; auf diese Weise wurde die Nachricht unleser-
lich. Der Empfänger benutzte nun eine ähnliche Formel, die die Arbeit des
Absenders rückgängig machte und so die Mitteilung wieder in den Ursprungszu-
stand brachte.
Dieser Ansatz funktionierte eine Weile, hatte aber einen ganz wesentlichen Nach-
teil, denn der Code konnte »mit brutaler Gewalt« geknackt werden; diese
Methode bestand darin, mit möglichst vielen Leuten möglichst jede denkbare
Kombination zur Dekodierung der Nachricht auszuprobieren. Nebenbei: Heutzu-
tage können diese einfachen Codes innerhalb von Sekunden, maximal von Minu-
ten von konventionellen PCs enträtselt werden.
Auch die heutzutage verwendete Verschlüsselung basiert nach wie vor auf mathe-
matischen Formeln. Diese aber sind weitaus komplexer und gegenüber brutaler
Gewalt nahezu unempfindlich. Einer der Gründe dafür ist die so genannte »Ver-
schlüsselungsstärke«. Diese wird in Bit ausgedrückt und verweist auf die Länge
des bei der Ver- und Entschlüsselung der Daten verwendeten Codeschlüssels. Die
momentan stärkste Verschlüsselung unter IIS 5.0 ist 128 Bit stark. Ein Benutzer,
der derart kodierte Daten entschlüsseln will, muss den Schlüssel haben. Es ist
nicht unmöglich, die 128-Bit-Verschlüsselung zu knacken. Allein die Zeit, die
auch mit heutiger Computertechnologie zur Entschlüsselung benötigt würde,
wäre so lang, dass die Daten bei erfolgter Dekodierung inzwischen wertlos sind.
IIS verwendet die so genannte »Verschlüsselung mit öffentlichem Schlüssel«.
Diese Methode benutzt zwei Schlüssel, nämlich einen öffentlichen und einen pri-
vaten. Der private Schlüssel liegt auf dem Server und wird zur Ver- und Ent-
schlüsselung von Daten benutzt, die an einen Client gesendet bzw. durch diesen
empfangen wurden.
Während einer Kommunikationssitzung, die mit SSL arbeitet, gibt der Webbrow-
ser eine Anfrage nach einer sicheren Verbindung mit dem Server aus, indem er
statt des normalen Header http:// den HTTPS-Protokollheader verwendet. Server
und Client handeln daraufhin die Verschlüsselungsstärke aus.
206 Verschlüsselung
Wenn diese Verhandlung abgeschlossen ist, sendet der Server dem Browser einen
öffentlichen Schlüssel. Mit diesem Schlüssel kodiert der Browser die Daten, die
er dann an den Server sendet, und der Server seinerseits kann dann mit seinem
privaten Schlüssel die Daten dekodieren. Sowohl Server als auch Client verwen-
den während der Sitzung einen »Sitzungsschlüssel«. Mit dem Abschluss der Sit-
zung endet auch die Gültigkeit des Schlüssels.
Warnung
Das schwache Glied in der Sicherheitskette ist bei der Verschlüsselung
mit öffentlichem Schlüssel der private Schlüssel auf dem Server. Es ist
absolut unabdingbar, diesen privaten Schlüssel vor der Entdeckung zu
schützen – verwenden Sie hierzu die stärkste Verschlüsselungsmethode,
die Ihnen zur Verfügung steht.
Abb. 8.15: Im Dialogfeld SICHERE KOMMUNIKATION aktivieren Sie SSL für Ihre
Website
208 Zertifikate
8.5.2 Verschlüsselungsstärke
Die Verschlüsselungsstärke spielt bei der sicheren Kommunikation eine wichtige
Rolle. Standardmäßig verwendet IIS eine Verschlüsselungsstärke von 40 Bit. Sie
können diese durch Markierung des Kontrollkästchens 128-BIT-VERSCHLÜSSE-
LUNG ERFORDERLICH im Dialogfeld SICHERE KOMMUNIKATION (Abbildung 8.15)
auf 128 Bit erhöhen. Je größer Ihre Verschlüsselungsstärke, desto besser ist die
Kommunikation geschützt.
Banken können einer Erweiterung von SSL benutzen, die als SGC (Server-Gated
Cryptography) bekannt ist. Diese Methode verwendet die 128-Bit-Verschlüsse-
lung, kann aber auch mit der 40-Bit-Verschlüsselung arbeiten. Wenn Sie SGC
nutzen wollen, müssen Sie sich an Ihre Zertifizierungsstelle wenden und ein
SGC-Zertifikat anfordern.
8.6 Zertifikate
Das Thema Zertifikate wurde bereits im vorhergehenden Abschnitt angesprochen.
Die Verwendung von Zertifikaten gestattet es einem Browser und einem Server,
mit Hilfe einer digitalen Signatur ihre Identität zu bestätigen. Es gibt zwei grund-
legende Typen von Zertifikaten:
• Serverzertifikate. Serverzertifikate liegen auf dem Server und erfüllen drei
Funktionen: Sie authentifizieren Benutzer auf dem Server, können Webinhalte
verifizieren und werden zur Herstellung einer sicheren Kommunikation mit
SSL oder SGC benutzt.
• Clientzertifikate. Mit Clientzertifikaten, die auf dem Clientrechner liegen,
können sich Benutzer gegenüber dem Server ausweisen. Auch Clientzertifikate
werden durch eine Zertifizierungsstelle ausgegeben. Das Clientzertifikat und
der öffentliche Schlüssel, den ein Server ausstellt, agieren zusammen als
Schlüsselpaar für die sichere Kommunikation. Das Clientzertifikat enthält In-
formationen zur Identifikation des Benutzers, die ausstellende Zertifizierungs-
stelle, einen öffentlichen Schlüssel, eine Seriennummer und ein Ablaufdatum.
VeriSign bietet für Kunden, die erst einmal überprüfen wollen, ob dies das rich-
tige für sie ist, eine Testversion an, die nach 14 Tagen abläuft. Gehen Sie dazu auf
die Website von VeriSign (http://www.verisign.com) und wählen Sie dort unter
Web Server Certificates den Hyperlink Free Trial.
Wenn Sie bereits ein Zertifikat auf Ihrem Server installiert haben, können Sie die-
ses nun konfigurieren. Öffnen Sie hierzu das Dialogfeld EIGENSCHAFTEN der
Website, auf der Sie das Zertifikat verwenden wollen. Pro Website können Sie nur
ein Zertifikat benutzen.
Wählen Sie die Registerkarte VERZEICHNISSICHERHEIT und klicken Sie auf die
Schaltfläche BEARBEITEN im Abschnitt SICHERE KOMMUNIKATION. Im nun
erscheinenden Dialogfeld SICHERE KOMMUNIKATION markieren Sie das Kontroll-
kästchen SICHEREN KANAL VERLANGEN (SSL), um SSL und das Zertifikat zu
aktivieren. Sie können hier außerdem die Option 128-BIT-VERSCHLÜSSELUNG
ERFORDERLICH anklicken. Hinweise zur 128-Bit-Verschlüsselung finden Sie wei-
ter oben in diesem Kapitel.
Sie haben SSL nun auf Ihrem Rechner konfiguriert. Aber Moment… was, wenn
Sie kein Zertifikat haben? Wo können Sie das denn dann erwerben? Weiter unten
in diesem Kapitel wird im Abschnitt »Serverzertifikate erwerben« beschrieben,
wie Sie sich Zertifikate von Drittanbietern beschaffen. Zuerst aber wollen wir uns
mit den neuen Sicherheits-Assistenten beschäftigen, die mit IIS 5.0 ausgeliefert
werden.
zwei Szenarios unterschieden: Das erste Szenario beschreibt eine Site, bei der die
Öffentlichkeit auf die Serverinhalte zugreifen kann. Im zweiten Szenario sind die
Sicherheitsanforderungen hingegen strenger; es basiert auf der Idee, für den
Zugriff auf vertrauliche Daten ein Extranet über das Internet zu betreiben.
Jeder der Assistenten geleitet Sie in einem schrittweisen Prozess mit simplen Ein-
gabefenstern durch den jeweiligen Konfigurationsvorgang. Auf diese Weise wird
die Bearbeitung sicherheitsrelevanter Aufgaben fast zum Kinderspiel.
Abb. 8.16: Mit dem IIS-ZERTIFIKATS-ASSISTENTEN können Sie ein neues Zertifikat
erstellen, ein vorhandenes hinzufügen oder ein Zertifikat importieren
Das nächste Fenster heißt GEMEINSAMER NAME IHRER SITE. Wenn Sie den Server
im Internet nutzen werden, dann geben Sie hier den vollqualifizierten Domänen-
namen ein. Verwenden Sie den Server hingegen nur im Intranet, dann können Sie
den NetBIOS-Namen verwenden. Mit einem Klick auf WEITER setzen Sie den
Vorgang fort.
Im Fenster GEOGRAPHISCHE INFORMATIONEN werden Sie zur Eingabe der Daten
LAND/REGION, BUNDESLAND/KANTON und STADT aufgefordert. Wenn Sie
danach auf WEITER klicken, müssen Sie noch einen Pfad und einen Dateinamen
für Ihre Anforderungsdatei angeben, d.h. für die Datei, die Sie zwecks Ausstel-
lung des Zertifikats an die Zertifizierungsstelle senden. Sie können hier den vor-
geschlagenen Pfad und Dateinamen übernehmen; bedenken Sie dabei aber, dass
Sie später wissen müssen, in welchem Verzeichnis Sie die Datei gespeichert
haben.
Wenn Sie die Erstellung der Anforderungsdatei fertig gestellt haben, dann können
Sie das Zertifikat anfordern. Stellen Sie zu diesem Zweck eine Verbindung mit
der Website von VeriSign (http://www.verisign.com) her. Dort werden Sie im
Verlauf des Antragsvorgangs aufgefordert, die auf Ihrem Server liegende Anfor-
derungsdatei zu übergeben. Dies tun Sie, indem Sie diese Datei mit einem Editor
öffnen – etwa dem Windows-Editor (Notepad). Kopieren Sie den Inhalt der Datei
in die Zwischenablage und fügen Sie die verschlüsselten Daten dann in das ent-
sprechende Textfeld auf der Webseite von VeriSign ein. Abbildung 8.17 zeigt den
Editor mit dem Inhalt meiner Anforderungsdatei.
212 Zertifikate
Abb. 8.17: Die Zertifikatsanforderung ist eine verschlüsselte Textdatei, die alle mit
dem ZERTIFIKATS-ASSISTENTEN eingegebenen Daten enthält
Wie Sie in Abbildung 8.17 sehen, ist die Datei verschlüsselt. Dadurch wird ver-
hindert, dass Ihre Daten während der Übertragung von Unberechtigten mitgelesen
werden.
VeriSign verifiziert alle von Ihnen gemachten Angaben, bevor Ihnen das Zertifi-
kat für Ihren Server zugestellt wird. Wenn Sie – wie ich – das Testzertifikat
bestellt haben, dann sollten Sie es binnen einer Stunde via E-Mail erhalten. Die
Zertifikatsdaten befinden sich – wiederum in verschlüsselter Form – im unteren
Teil der Ihnen von VeriSign zugesandten E-Mail. Diese Daten verwenden Sie zur
Installation des Zertifikats auf Ihrem Server – kopieren Sie sie wieder in die Zwi-
schenablage und fügen Sie sie dann im Editor in ein leeres Textdokument ein.
Speichern Sie dieses Dokument anschließend in einem Verzeichnis, auf das Sie
zugreifen können. Ich habe meine Datei cert.txt genannt, um sie schneller wieder-
zufinden.
Begeben Sie sich nun wieder auf die Registerkarte VERZEICHNISSICHERHEIT des
Dialogfeldes EIGENSCHAFTEN Ihrer Website und klicken Sie erneut auf die
Schaltfläche SERVERZERTIFIKAT. Wenn Sie im Begrüßungsfenster auf WEITER
geklickt haben, sehen Sie ein bis dato unbekanntes Fenster (Abbildung 8.18).
Kapitel 8 • Sicherheit 213
Abb. 8.19: Das Fenster ZUSAMMENFASSUNG zeigt die Details des installierten
Zertifikats an
Abb. 8.20: Das Fenster ZERTIFIKAT zeigt ein paar allgemeine Angaben zum Zertifikat
an, so etwa den Aussteller, den Server, für den das Zertifikat ausgestellt
wurde, und das Ablaufdatum
Kapitel 8 • Sicherheit 215
8.6.4 Zertifikatsvertrauenslisten
Mit Zertifikatsvertrauenslisten können Sie eine Liste von Zertifizierungsstellen
anlegen, die Zertifikate für Ihre Server ausstellen. Sie können bei Bedarf für jede
Website eine individuelle Liste mit Zertifizierungsstellen einrichten. Die Funktion
ermöglicht Ihren Servern eine automatische Verifizierung von Clients anhand der
Zertifikatsvertrauensliste. Erstellt und editiert werden die Zertifikatsvertrauenslis-
ten mit dem ASSISTENTEN FÜR ZERTIFIKATSVERTRAUENSLISTEN.
Hinweis
Zertifikatsvertrauenslisten können nur auf Websites, nicht jedoch auf
Verzeichnisse oder virtuelle Verzeichnisse angewandt werden.
Abb. 8.22: Im Dialogfeld ZERTIFIKAT AUSWÄHLEN wird eine Liste der Zertifikate
angezeigt, die mit IIS 5.0 installiert wurden
8.6.5 Clientzertifikate
Clientzertifikate erhalten Sie bei Zertifizierungsstellen auf die gleiche Weise wie
Serverzertifikate. Einige Zertifizierungsstellen fordern Sie eventuell zur Eingabe
Ihrer Daten auf, um Ihre Identität verifizieren zu können.
Kapitel 8 • Sicherheit 217
Der folgende Vorgang bezieht sich auf den Internet Explorer. Wenn Sie Netscape
oder einen anderen Browser verwenden, finden Sie Angaben zum entsprechenden
Vorgang in dessen Onlinehilfe.
Clientzertifikate erwerben
Gehen Sie wie folgt vor, um ein Clientzertifikat für Ihren Webbrowser zu erwer-
ben:
1. Finden Sie eine vertrauenswürdige Zertifizierungsstelle und begeben Sie sich
auf deren Website.
2. Lesen Sie alle Anweisungen oder Hinweise, die sich auf die Vorgehensweise
der Zertifizierungsstelle beziehen, aufmerksam durch.
3. Geben Sie auf Verlangen alle Daten an, die zur Identitätsprüfung benötigt wer-
den, und bestellen Sie das Zertifikat.
4. Wenn Sie das Zertifikat erhalten haben, installieren Sie es in Ihrem Browser.
Beim Internet Explorer 5.0 wählen Sie dazu im Menü EXTRAS den Eintrag
INTERNETOPTIONEN und aktivieren im angezeigten Dialogfeld die Registerkar-
te INHALT (Abbildung 8.23).
Clientzertifikate aktivieren
Durch Aktivierung von Clientzertifikaten auf Ihrem Server verhindern Sie, dass
Benutzer ohne solche Zertifikate eine Verbindung zu dem Server herstellen. Sie
sollten dabei allerdings beachten, dass die Anforderung eines Clientzertifikats die
Daten auf Ihrem Server nicht vor unberechtigtem Zugriff schützt. Sie müssen
hierzu eine Authentifizierungsmethode (wie etwa die Standard-, die Digest- oder
die integrierte Authentifizierung) verwenden.
Eine weitere Möglichkeit der Benutzerüberwachung ist die Kontozuordnung von
Clientzertifikaten. Auf diese Weise können Sie sicherstellen, dass der Client der-
jenige ist, der er zu sein vorgibt, und dass er über ein gültiges Windows-Konto mit
gesetzten NTFS-Berechtigungen verfügt. Öffnen Sie also wieder einmal das Dia-
logfeld EIGENSCHAFTEN Ihrer Website und klicken Sie auf der Registerkarte VER-
ZEICHNISSICHERHEIT im Abschnitt SICHERE KOMMUNIKATION auf die Schaltflä-
che BEARBEITEN. Nun öffnet sich das Dialogfeld SICHERE KOMMUNIKATION
(Abbildung 8.24).
Abb. 8.24: Das Dialogfeld SICHERE KOMMUNIKATION. Hier konfigurieren Sie die
Verwendung von Clientzertifikaten für Ihre Website.
Kapitel 8 • Sicherheit 219
Vergewissern Sie sich, dass die Option SICHEREN KANAL VERLANGEN (SSL) mar-
kiert ist. Dadurch ist gewährleistet, dass jeder Client, der eine Verbindung mit die-
ser Website herstellt, das HTTPS-Protokoll verwenden muss.
Im Abschnitt CLIENTZERTIFIKATE in der Mitte des Dialogfeldes können Sie zwi-
schen drei verschiedenen Optionen für Clientzertifikate auswählen:
• Clientzertifikate ignorieren. Gewährt Clients mit und ohne Clientzertifikat
gleichermaßen den Zugriff.
• Clientzertifikate akzeptieren. Konfiguriert den Server so, dass er Verbindun-
gen von Clients, die über Zertifikate verfügen, ebenso akzeptiert wie von
Clients ohne Zertifikate.
• Clientzertifikate verlangen. Fordert von Clients, die sich mit dem Server ver-
binden wollen, die Vorlage eines Zertifikats. Wenn der Client nicht über ein
Zertifikat verfügt, wird der Zugriff verweigert.
Hinweis
Damit Ihr Server Clientzertifikate verlangen kann, muss auf ihm ein Ser-
verzertifikat installiert sein.
Hinweis
Damit die im Folgenden beschriebenen Vorgänge Wirkung zeigen, müs-
sen Sie die Website beenden und neu starten.
Es gibt drei Typen der Zuordnung, nämlich die 1:1-Zuordnung, die n:1-Zuord-
nung und die Verzeichnisdienstzuordnung.
Die 1:1-Zuordnung ordnet einem Benutzerkonto genau ein Clientzertifikat zu.
Wenn eine Anforderung von einem Browser erhalten wird, dann muss der Brow-
ser das Zertifikat als Identitätsnachweis mitsenden. Der Server vergleicht das Zer-
tifikat mit demjenigen, das er für das Konto gespeichert ist. Stimmen die Zertifi-
kate nicht absolut überein, dann wird der Zugriff verweigert.
220 Zertifikate
Tipp
Deswegen muss, wenn ein Benutzer ein Clientzertifikat erneuert, die
Zuordnung erneut durchgeführt werden, damit die Zertifikate überein-
stimmen.
Die n:1-Zuordnung ist weniger rigide als die 1:1-Zuordnung. Der Server prüft
hierbei lediglich, ob ein Zertifikat bestimmte Daten enthält – etwa den Namen des
Ausstellers. Stimmen die Kriterien überein, wird das Zertifikat akzeptiert. Auf
diese Weise kann ein Client ein Zertifikat erneuern, ohne dass ihm danach der
Zugriff auf die Ressourcen verweigert wird, denn bestimmte Daten – etwa zum
Benutzer oder zur Zertifizierungsstelle – ändern sich nicht.
Die Verzeichnisdienstzuordnung ist in einer verteilten Umgebung nützlich, in der
Ihre Organisation Windows 2000 Active Directory verwendet. Clientzertifikate
können so im Netzwerk serverübergreifend authentifiziert und genutzt werden.
Warnung
Bevor Sie die Verzeichnisdienstzuordnung wählen, sollten Sie wissen,
dass diese Methode auf der obersten Ebene angewandt wird und die 1:1-
oder n:1-Zuordnungen auf Ihrem Server deaktiviert. Ihr Computer muss
dann auch ein Mitglied einer Windows 2000-Domäne sein.
Abb. 8.26: Im Dialogfeld KONTOZUORDNUNG geben Sie das Benutzerkonto und das
zugehörige Kennwort ein, um das Zertifikat zuzuordnen
Wenn Sie kein Zertifikat ausfindig machen können, sollten Sie eines aus dem
Browser exportieren. Dazu wählen Sie im Internet Explorer 5.0 im Menü EXTRAS
den Eintrag INTERNETOPTIONEN. Aktivieren Sie die Registerkarte INHALT und
klicken Sie dort auf die Schaltfläche ZERTIFIKATE, um das Dialogfeld ZERTIFI-
222 Zertifikate
KATE zu öffnen. Wählen Sie hier das gewünschte Zertifikat aus und klicken Sie
auf die Schaltfläche EXPORTIEREN. Nun wird der ZERTIFIKATSEXPORT-ASSIS-
TENT gestartet.
Wenn Sie nun auf WEITER klicken, werden Sie aufgefordert, einen Dateinamen
für das exportierte Zertifikat anzugeben. Im Dialogfeld KONTOZUORDNUNG kön-
nen Dateien mit den Erweiterungen .cer, .crt, .spc und .key gesucht werden;
benennen Sie Ihre Datei also entsprechend. Klicken Sie nun auf WEITER. Der
Assistent zeigt abschließend eine Zusammenfassung der von Ihnen vorgenomme-
nen Einstellungen an. Klicken Sie auf FERTIG STELLEN. Wenn alles klappt,
erscheint eine Meldung, dass der Export erfolgreich verlaufen ist.
Um eine n:1-Zuordnung vorzunehmen, folgen Sie dem für die 1:1-Zuordnung
beschriebenen Vorgang, aktivieren aber die Registerkarte N:1. Klicken Sie auf die
Schaltfläche HINZUFÜGEN, um das Dialogfeld ALLGEMEIN (Abbildung 8.28) zu
öffnen.
Markieren Sie das Kontrollkästchen PLATZHALTERREGEL AKTIVIEREN, geben Sie
eine passende Beschreibung ein und klicken Sie dann auf die Schaltfläche
WEITER.
Kapitel 8 • Sicherheit 223
Abb. 8.28: Das Dialogfeld ALLGEMEIN, das über die Registerkarte N:1 aufgerufen
wird, fordert eine Beschreibung der Zuordnung an
Nun wird das Dialogfeld REGELN angezeigt, in dem Sie Regeln hinzufügen kön-
nen, die die Platzhalter für die Zuordnung definieren. Klicken Sie auf die Schalt-
fläche NEU, um eine Regel hinzuzufügen. Das Dialogfeld REGEL BEARBEITEN
(Abbildung 8.29) öffnet sich.
Abb. 8.29: Das Dialogfeld REGEL BEARBEITEN ermöglicht Ihnen die Konfiguration von
Kriterien, die bei der Zuordnung übereinstimmen müssen
Wählen Sie auf der Basis der in diesem Dialogfeld vorhandenen Daten die Krite-
rien aus, die bei der n:1-Zuordnung angewandt werden sollen, und klicken Sie auf
die Schaltfläche OK. Nun wird wieder das Dialogfeld REGELN angezeigt. Sie
können hier über NEU weitere Regeln hinzufügen oder aber durch Anklicken der
Schaltfläche WEITER fortfahren.
224 Zertifikate
Wenn Sie WEITER angeklickt haben, können Sie das Benutzerkonto angeben, auf
das die Regel angewandt wird. Geben Sie den Namen des Kontos ein, oder suchen
Sie es über die Schaltfläche DURCHSUCHEN. Geben Sie dann das zugehörige
Kennwort ein. Wenn Sie nun auf FERTIG STELLEN klicken und das Kennwort
anschließend erneut bestätigen, wird die Regel der Liste auf der Registerkarte N:1
hinzugefügt.
Klicken Sie im Dialogfeld KONTOZUORDNUNG (Abbildung 8.25) auf OK, um es
zu schließen und die Änderungen zu übernehmen. Schließen Sie dann das Dialog-
feld SICHERE KOMMUNIKATION über die Schaltfläche OK. Nun müssen Sie die
Website noch beenden und neu starten, damit die Zuordnungen angewandt wer-
den.
Hinweis
Wenn Sie sowohl mit 1:1- als auch mit n:1-Zuordnungen arbeiten, dann
haben die 1:1-Zuordnungen im Konfliktfall Vorrang.
8.6.7 Überwachung
Die Überwachung ist eine tolle Funktion, denn sie gibt Ihnen Informationen über
erfolgte und misslungene Anmeldeversuche, über Benutzer, die auf einge-
schränkte Bereiche und Ressourcen zugreifen wollten, für die sie keine Berechti-
gung besitzen, und solche, die versuchen, untersagte Befehle zu verwenden.
Zwar kann die Überwachung Eindringlinge nicht abwehren, aber sie kann doch
hilfreich bei der Feststellung von Einbruchsversuchen und unangemessener Ver-
wendungen oder Zugriffe auf Ihren Webserver sein.
Selektieren Sie in der Liste den Eintrag GRUPPENRICHTLINIE und klicken Sie
dann auf die Schaltfläche HINZUFÜGEN. Nun wird das Dialogfeld GRUPPEN-
RICHTLINIENOBJEKT AUSWÄHLEN angezeigt, in dem Sie den zu überwachenden
Computer eingeben. Wenn Sie den lokalen Computer überwachen wollen, lassen
Sie die Voreinstellung stehen und klicken Sie einfach auf FERTIG STELLEN.
Klicken Sie nun im Dialogfeld EIGENSTÄNDIGES SNAP-IN HINZUFÜGEN/ENTFER-
NEN auf SCHLIESSEN und dann im Fenster SNAP-IN HINZUFÜGEN/ENTFERNEN auf
OK, um wieder zur MMC-Konsole zurückzukehren. Das Snap-In wurde hinzuge-
fügt, und das Fenster sollte jetzt so aussehen wie in Abbildung 8.31 gezeigt – hier
finden wir das Snap-In tatsächlich wieder.
Hinweis
Um die Überwachung zu nutzen, muss das Dateisystem NTFS verwendet
werden. Aus diesem Grunde habe ich Ihnen an früherer Stelle dieses
Buches die Verwendung von NTFS beziehungsweise die Konvertierung
Ihrer FAT-Datenträger zu NTFS empfohlen.
Klicken Sie nun auf OK, um die Einstellungen zu übernehmen. Wenn Sie eine
Fehlermeldung erhalten, dass die Überwachung für den Server nicht aktiviert ist,
dann müssen Sie das Snap-In GRUPPENRICHTLINIE aufrufen, das wir weiter oben
erstellt haben. Blenden Sie die Verzeichnisstruktur soweit ein, bis Sie auf das
Objekt ÜBERWACHUNGSRICHTLINIEN des lokalen Computers zugreifen können.
Abbildung 8.34 zeigt den Pfad zu diesem Objekt.
Um die Überwachung der im rechten Fensterbereich aufgelisteten Ereignisse zu
aktivieren, klicken Sie mit der rechten Maustaste auf das gewünschte Ereignis
und wählen den Eintrag SICHERHEITSEINSTELLUNGEN aus dem Kontextmenü.
Selektieren Sie nun nach Bedarf eine der Optionen ERFOLGREICH bzw. FEHLGE-
SCHLAGEN.
Warnung
Die Überwachung kann ein tolles Tool zur Ermittlung erfolgreicher und
fehlgeschlagener Zugriffsversuche auf den Server sein, aber sie kann sich
auch als gigantischer Ressourcenfresser erweisen. Setzen Sie sie also mit
Bedacht ein, um die gewünschten Ergebnisse zu erzielen, ohne Ihre Ser-
verressourcen allzu sehr zu belasten.
228 Zertifikate
Hinweis
Um das Sicherheitsprotokoll mit der Ereignisanzeige betrachten zu kön-
nen, müssen Sie über Administratorenrechte verfügen.
Obwohl das Sicherheitsprotokoll im Falle meines Servers leer ist – dies ist der
Idealfall –, kann es wertvolle Informationen liefern, denn fehlgeschlagene
Anmeldungen, Ressourcenzugriffe oder Dateiuploads weisen auf potentielle Ein-
brüche hin. Jeder einzelne Eintrag im Sicherheitsprotokoll sollte ernst genommen
und seine Ursache eingehend untersucht werden.
8.7 IPSec
IPSec (Internet Protocol Security, Internetprotokollsicherheit) ist ein Sicherheits-
mechanismus, der von der IETF (Internet Engineering Task Force) entwickelt
wurde. Er ermöglicht eine Formatierung von IP-Datenpaketen, die die Realisie-
rung eines starken Ende-zu-Ende-Authentifizierungsmechanismus ermöglicht.
Ferner garantiert IPSec Datenintegrität, Anti-Replay und Vertraulichkeit.
Bei der Integration von Windows 2000-Domänen und Active Directory hat Mic-
rosoft auf IPSec gebaut. Deswegen können Sie Authentifizierungsstandards wie
Kerberos V5, Szenarios mit öffentlichen und privaten Schlüsseln und kennwort-
basierte Authentifizierungsmethoden benutzen, um Vertrauensstellungen zwi-
schen Computern zu schaffen.
Wenn mehrere Computer eine solche Vertrauensstellung hergestellt haben, dann
können diese mit der Übertragung verschlüsselter Daten beginnen. Das funktio-
niert insofern auf ähnliche Weise wie in einem virtuellen privaten Netzwerk
(VPN), als die Daten, die zwischen den Computern übertragen werden, immer
noch eingesehen werden können – aber ein Eindringling verfügt nicht über die
Verschlüsselungsmechanismen, wodurch die Daten für ihn unbrauchbar werden.
Bei der Konfiguration von IPSec auf Ihrem Server sind zwei Fälle vorgesehen: Sie
können eine vordefinierte IPSec-Richtlinie verwenden, oder Sie können Ihre
eigene Richtlinie erstellen. Beide Ansätze sind recht knifflig, und ich werde hier
auch nicht weiter darauf eingehen. Sie können sich jedoch unter http://www.micro-
soft.com/WINDOWS2000/library/planning/security/ipsecsteps.asp ein hervor-
ragendes Weißbuch über IPSec herunterladen, in dem die Konfiguration auf dem
Server und die Überwachung detailliert beschrieben wird.
8.8 Fazit
Das war wohl das längste Kapitel in diesem Buch – und das aus gutem Grund.
Das Internet steht weltweit jedem offen, der einen Computer und einen Internet-
provider hat. Wenn Sie einen Server oder einen Computer mit dem Internet ver-
binden, dann können sich all die Leute da draußen auch mit Ihrem Computer ver-
binden.
Microsoft hat in den letzten paar Jahren maßgeblich zur Verbreitung von Sicher-
heitslücken beigetragen. Einige wurden von bedeutenden Organisationen ent-
deckt, die ihre Netzwerke auf Sicherheitsmängel überprüften. Andere wiederum
Kapitel 8 • Sicherheit 231
kamen zum Vorschein, weil böswillige Benutzer sich unberechtigt Zutritt zu den
Netzwerken von Firmen und Organisationen verschafft haben.
Ein solcher Fall wurde erst kürzlich bekannt. Es ging dabei um eine Sicherheitslü-
cke bei IIS 4.0, das als Bestandteil des Windows NT 4.0 Option Packs ausgelie-
fert wurde. Diese Hintertür gestattete Webentwicklern mit Autorenprivilegien die
Ausführung von Code auf dem Server, den Zugriff auf andere Websites auf die-
sem Server und die Anzeige von Inhalten bestimmter Dateien auf dem Server.
Gefunden wurde die Sicherheitslücke in einer Datei namens Dvwssr.dll, die auf
solchen IIS-Servern vorhanden war, auf denen die FrontPage-Servererweiterun-
gen installiert waren. Einen Patch gibt es nicht – Microsoft empfiehlt, die Datei
einfach zu löschen. Übrigens: Bei IIS 5.0 unter Windows 2000 ist die Sicherheits-
lücke nicht mehr vorhanden; die Aktualisierung von NT 4.0 und IIS 4.0 auf
IIS 5.0 löst das Problem also.
Sicherheitshalber habe ich nun meine Festplatte durchsucht, und siehe da: Die
Datei ist immer noch vorhanden. Warum? Weil ich in einer Multiboot-Umgebung
mit NT 4.0 und Windows 2000 Server arbeite. Microsoft erwähnt nirgendwo,
dass dies ein Problem sein könnte, und die meisten IIS 5.0-Installationen werden
ohnehin nicht in einer Multiboot-Umgebung vorhanden sein. Nach Ansicht von
Microsoft kann die Datei aber gelöscht werden, ohne dass es dadurch zu Proble-
men kommt. Weitere Informationen finden Sie unter http://www.microsoft.com/
technet/security/bulletin/ms00-025.asp.
Sie können die in diesem Kapitel präsentierten Informationen verwenden, um die
Sicherheitsfunktionen Ihres Webservers zu konfigurieren, zu warten und Anzei-
chen unberechtigter Zugriffsversuche aufzuspüren.
Eine der besten Entscheidungen, die ein Unternehmen treffen kann, ist die Bereit-
stellung eines alleinstehenden Servers (d.h. eines Servers, der an keiner Stelle mit
dem Firmennetzwerk verbunden ist) für alle das Internet betreffenden Aufgaben.
Durch dieses Vorgehen wehren Sie wirksam alle Angriffsversuche auf Ihr Netz-
werk ab, die über das Internet ausgeführt werden.
Es gibt natürlich auch eine ganz simple Möglichkeit, zu verhindern, dass Ihre
Website öffentlich zugänglich ist – weisen Sie einfach eine andere Anschluss-
nummer zu. Diese Methode wird beispielsweise bei der Verwaltungswebsite ver-
wendet, die Bestandteil von IIS ist. Wenn Sie mehrere IIS-Installationen verwen-
den, werden Sie festgestellt haben, dass die Anschlussnummer bei jeder
Installation zufällig ausgewählt wird. Das bedeutet, dass nicht jede IIS-Verwal-
tungswebsite über die gleiche Anschlussnummer erreichbar ist. Hierdurch werden
weitere Barrieren gegen potentielle Angreifer errichtet.
Auch IPSec bietet Ihnen diverse Sicherheitsoptionen für Ihren IIS-Server. Micro-
soft bietet hierzu ein Weißbuch an, in dem erklärt wird, wie IPSec-Richtlinien
konfiguriert und überwacht werden.
232 Fazit
Wenn Sie vertrauliche Daten auf einem Webserver speichern, dann betrachten Sie
die hier vorgestellten Themen und Vorgehensweise als Möglichkeit, Ihre Daten zu
schützen.
Eine weitere Methode, die wir hier nicht erläutert haben, ist die Verwendung von
VPNs zur Erhöhung der Kommunikationssicherheit. Dieses Thema ist noch recht
neu – es ist erst etwa ein oder zwei Jahre alt. Microsoft hat ein Protokoll für virtu-
elle private Netzwerke implementiert, das Sie unter Windows 2000 nutzen kön-
nen. Sie können natürlich auch nach Software- und Hardwareimplementationen
von Drittanbietern Ausschau halten.
Kapitel 9
Benutzerdefinierte
Fehlermeldungen
Das Protokoll HTTP 1.1 definiert eine Reihe allgemeiner Fehlermeldungen, die
am Client bei Auftreten von Verbindungsproblemen oder Fehlern beim Verbin-
dungsaufbau angezeigt werden. Diese Fehlermeldungen geben keine genaue Aus-
kunft darüber, wo das Problem liegt. Einige dieser Fehlermeldungen sind durch-
aus geläufig – Sie kennen sicher auch den Fehler 404: Nicht gefunden, der
angezeigt wird, wenn die angeforderte Seite auf dem Server nicht vorhanden ist.
Aus der Sicht Ihrer Clients sollten natürlich bei einer gut gewarteten Website kei-
nerlei Fehlermeldungen auftreten; dies ist aber bei großen Sites, an denen meh-
rere Entwickler arbeiten, praktisch unmöglich. Fehlermeldungen sind unvermeid-
lich. Sie können Ihren Clients aber ein wenig entgegenkommen, indem Sie
Fehlermeldungen selbst definieren, die das Problem erläutern, statt dem Benutzer
einfach nur den Fehlercode nach HTTP 1.1 vorzusetzen. Tabelle 9.1 listet die
Fehlercodes und die zugehörigen Standardmeldungen auf.
Fehlercode Fehlermeldung
400 Ungültige Anforderung
401.1 Anmeldung fehlgeschlagen
401.2 Anmeldung aufgrund Serverkonfiguration fehlgeschlagen
401.3 Nicht autorisiert aufgrund ACL auf Ressource
401.4 Autorisierung aufgrund Filter fehlgeschlagen
401.5 Autorisierung aufgrund ISAPI/CGI-Anwendung fehlgeschlagen
403.1 Zugriff »Ausführen« verboten
403.2 Lesezugriff verboten
403.3 Schreibzugriff verboten
403.4 SSL erforderlich
403.5 SSL128 erforderlich
403.6 IP-Adresse zurückgewiesen
403.7 Clientzertifikat erforderlich
403.8 Sitezugriff verweigert
403.9 Zu viele Benutzer
403.10 Ungültige Konfiguration
403.11 Kennwortänderung
403.12 Zugriffsmodul verweigerte Zugriff
403.13 Clientzertifikat zurückgezogen
403.14 Verzeichnisliste verweigert
403.15 Clientzugriffslizenzen überschritten
403.16 Clientzertifikat nicht vertrauenswürdig oder ungültig
Tab. 9.1: Fehlercodes und zugehörige Meldungen nach HTTP 1.1
Kapitel 9 • Benutzerdefinierte Fehlermeldungen 235
Fehlercode Fehlermeldung
403.17 Clientzertifikat abgelaufen oder noch nicht gültig
404 Nicht gefunden
404.1 Site nicht gefunden
405 Methode nicht erlaubt
406 Nicht akzeptabel
407 Proxyauthentifizierung erforderlich
412 Vorabbedingung fehlgeschlagen
414 URI-Anforderung zu lang
500 Interner Serverfehler
500.12 Anwendung wird neu gestartet
500.13 Server ist zu stark belastet
500.15 Anforderungen bezüglich Global.asa nicht erlaubt
500-100.asp ASP-Fehler
501 Nicht implementiert
502 Ungültiger Gateway
Tab. 9.1: Fehlercodes und zugehörige Meldungen nach HTTP 1.1 (Forts.)
Wie Sie sehen, sind die meisten dieser Meldungen doch recht kryptisch und für
den durchschnittlichen Websitebesucher nicht gerade aussagekräftig. Glückli-
cherweise bietet IIS 5.0 die Konfiguration benutzerdefinierter Meldungen, welche
die Standardmeldungen ersetzen.
Warnung
Jede dieser Dateien kann mit einem einfachen Text- oder HTML-Editor
modifiziert und den eigenen Bedürfnissen angepasst werden. Ich emp-
fehle Ihnen aber, diese Meldungsdateien nicht zu verändern und statt
dessen neue Dateien zu erstellen.
Starten Sie also einen beliebigen Text- oder HTML-Editor und erstellen Sie damit
die HTML-Datei für eine benutzerdefinierte Fehlermeldung. Listing 9.1 zeigt den
HTML-Code einer einfachen Fehlermeldung, die anstelle der Standardmeldung
404: Nicht gefunden angezeigt wird.
236 Fehlermeldungen erstellen und einsetzen
<HTML>
<HEAD>
<TITLE>Seite nicht gefunden</TITLE>
<BODY>
<CENTER><H2>Bitte entschuldigen Sie, dass die von Ihnen aufgerufene Seite momen-
tan nicht angezeigt werden kann.</H2></CENTER>
<p>
<br
<CENTER>Bitte senden Sie eine E-Mail an <a href="mailto:webmaster@gkcom-
put.com">webmaster@gkcomput.com</a> und nennen Sie uns die Datei oder Seite, die
Sie aufrufen wollten.
<p>Vielen Dank für Ihre Mithilfe. Wir bedauern, falls Ihnen Unannehmlichkeiten
entstanden sind.
</BODY>
</HTML>
Dieser Code generiert eine HTML-Seite, die schlicht und einfach die Fehlermel-
dung 404: Nicht gefunden ersetzt. Sie können natürlich jeden beliebigen Text ein-
setzen; 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 auf-
rufen, sollte Ihre neue Fehlermeldung angezeigt werden.
Sie sind hierbei aber nicht auf statische HTML-Seiten beschränkt, sondern kön-
nen 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 %>
<html>
<head>
<title>Seite nicht gefunden!</title>
</head>
<body>
<%
' 404custom.asp
' Diese ASP-Datei enthaelt eine benutzerdefinierte
' Fehlermeldung für den Fehlercode 404 – Nicht gefunden.
' Die Seite leitet auf eine URL um, weswegen Sie unter den
' Eigenschaften für benutzerdefinierte Fehlermeldungen für den
' Fehlercode 404 URL statt Datei wählen müssen.
Dim strQueryString
Dim strRequestedURL
Dim errMail
%>
<p> Bitte entschuldigen Sie, dass die von Ihnen aufgerufene Seite <% =strQuery-
String %> auf dem Server nicht gefunden wurde.<br>
Bitte überprüfen Sie die Schreibweise der in die Adresszeile eingegebenen URL
auf Fehler.<br>
Aufgrund des Fehlers wurde eine E-Mail an unseren Webmaster gesendet.<br>
Probieren Sie es doch auf unserer <a href="http://www.homepage.de">Startseite
</a>. </p>
</body>
</html>
Diese Seite ist ein wenig aufwendiger als die oben gezeigte HTML-Seite, denn
hier wurden ein paar ASP-Funktionen integriert. Zunächst werden einige Variab-
len definiert, die Daten aufnehmen, die vom Fehlercode zurückgegeben wurden.
Wir müssen wissen, welche URL aufgerufen wurde, um feststellen zu können, ob
die entsprechende Seite wirklich fehlt, oder ob das Vorhandensein einer solchen
Seite nie beabsichtigt war.
Dann erstellen wir ein neues Mailobjekt und konfigurieren die notwendigen Hea-
derdaten To (An), From (Von) und Subject (Betreff). Im Textteil der Mail werden
ein kurzer Text und die zurückgegebene URL abgelegt, dann wird die Wichtigkeit
der Mail festgelegt und die Mail gesendet.
Am Ende der Seite befindet sich der Text, der dem Benutzer angezeigt wird. Er
erläutert, was geschehen ist, und teilt dem Benutzer außerdem mit, dass eine ent-
sprechende Meldung an den Webmaster verschickt wurde.
Kopieren Sie nun auch diese Datei in den Fehlermeldungsordner und konfigurie-
ren Sie die Fehlermeldung Nicht gefunden in den EIGENSCHAFTEN VON STAN-
DARDWEBSITE (bzw. der betroffenen Website) so, dass bei ihrem Auftreten unsere
neue Datei aufgerufen wird.
Hinweis
In diesem Beispiel wurde zur Mailerstellung das Objekt cdonts verwen-
det. Vergewissern Sie sich, dass dieses Objekt auf dem Server installiert
und konfiguriert ist, da der Abschnitt zur Mailerstellung ansonsten nicht
funktioniert.
Wie Sie sehen, hat die Verwendung von ASP eine Reihe von Vorteilen gegenüber
den statischen Fehlermeldungen. Dieses kleine Beispiel bietet dem Benutzer aus-
reichende Informationen darüber, was passiert ist, und teilt ihm mit, dass der
Webmaster bereits informiert wurde – er braucht sich deswegen also keine Sorgen
mehr zu machen. Nebenbei: Die meisten Websitebesucher würden dem Webmas-
ter sowieso nicht Bescheid geben, sondern die Site einfach verlassen und dabei
das Gefühl haben, schlecht bedient worden zu sein; wahrscheinlich werden sie nie
wieder kommen.
Hinweis
Wenn Sie ASP-Dateien oder ISAPI-Anwendungen als benutzerdefinierte
Fehlermeldungen verwenden, wählen Sie im Dialogfeld EIGENSCHAFTEN
DER FEHLERZUORDNUNG die Option URL statt DATEI. Auf diese Weise wer-
den alle notwendigen Parameter an das Skript übergeben.
Hinweis
Wenn Sie von IIS 4.0 auf IIS 5.0 aktualisiert haben, dann werden Ihre
benutzerdefinierten Fehlermeldungen automatisch in das neue Verzeich-
nis kopiert.
Hinweis
Wenn Sie keine benutzerdefinierte Datei zur Verarbeitung von ASP-Feh-
lern erstellen oder zuweisen, dann geht IIS davon aus, dass eine solche
Datei nicht existiert. Gleiches gilt, wenn Ihre benutzerdefinierte Fehler-
verarbeitungsdatei ihrerseits Fehler enthält. Prüfen Sie deswegen den
Code Ihrer Fehlerverarbeitungsdatei, bevor Sie die Zuordnung der ASP-
Fehler an diese Datei vornehmen.
9.4 Fazit
Das Protokoll HTTP 1.1 setzt einen Standard für Meldungen, die bei Auftreten
von Fehlern an den Clientbrowser zurückgegeben werden. Diese Meldungen sind
kurz und häufig unverständlich, weswegen der Durchschnittsbenutzer nur sehr
wenig damit anfangen kann. IIS 5.0 wird nun mit einem Satz benutzerdefinierter
Fehlermeldungen ausgeliefert, die auf die Standardwebsite angewandt werden.
Diese Meldungen sind benutzerfreundlicher als die allgemeinen HTTP 1.1-Mel-
dungen.
Wenn Sie auch mit diesen erweiterten Fehlermeldungen nicht zufrieden sind,
dann können Sie Ihre eigenen benutzerdefinierten Meldungen erstellen und diese
dann den entsprechenden Fehlern zuordnen. Ferner können Sie benutzerdefinierte
ASP-Dateien erstellen, die bei Auftreten von ASP-Fehlern auf dem Server aufge-
rufen werden. Mit solchen Dateien können Sie beispielsweise Ihren Benutzern
Informationen zum Fehler übermitteln und auch automatisch eine E-Mail gene-
rieren, die an den Webmaster geschickt wird.
Es ist allgemein bekannt, dass die meisten Webentwickler hart an der Konsistenz
Ihrer Sites arbeiten; sie wollen sicherstellen, dass der Benutzer genau die Seiten
Kapitel 9 • Benutzerdefinierte Fehlermeldungen 241
Eine der besten Funktionen zur Problemlösung und Überwachung bei IIS 5.0 ist
die Möglichkeit, die Besucheraktivitäten auf Ihrer Site zu protokollieren. Die
hierbei gesammelten Daten können für Webmaster, Webentwickler und sogar für
die Werbeabteilung eines Sponsors von größtem Wert sein.
Die Untersuchung der Protokolldateien, die glücklicherweise im ASCII-Format
abgelegt werden, bringt verschiedenste Daten an den Tag: Wer hat unsere Site
besucht, welche Seiten werden wie oft angefordert, welche Fehlermeldungen
mussten an Clients gesendet werden?
Sie sehen die anfordernde IP-Adresse (192.168.1.20), gefolgt von Datum und
Uhrzeit der Anforderung. Dahinter folgen der Dienst, der das Protokoll aufge-
zeichnet hat (W3SVC1) und der NetBIOS-Name des Servers (zuhause).
Die zweite Zeile enthält zunächst die IP-Adresse des Servers (192.168.1.23). Die
nächsten paar Zahlen sind interessant. Die erste, 230, zeigt (in Sekunden) an, wie
lange es dauerte, bis die Anforderung vollständig war. Dann folgen mit 278 die
Anzahl der empfangenen und mit 1109 die Anzahl der gesendeten Bytes.
Die 200 in der zweiten Zeile verweist auf den HTTP-Statuscode, die darauffol-
gende 0 auf den Windows 2000-Statuscode. Am Ende des Eintrags finden wir
dann noch die Anforderungsmethode (get) und zu guter Letzt den Namen der
angeforderten Datei.
Wie Sie aus diesem Beispiel ersehen können, ist das Protokollformat »Microsoft
IIS« ziemlich einfach zu lesen.
Zu Beginn des Eintrags finden wir wieder die IP-Adresse des anfordernden
Clients. Dahinter stehen – in eckigen Klammern – Datum und Uhrzeit sowie die
Differenz zur GMT-Zeit (Greenwich Mean Time, MEZ-Zeit – 1 Stunde). Zwi-
schen den Anführungszeichen folgen der anfordernde Befehl (get), der Datei-
name und die Protokollversion. Abgeschlossen wird der Eintrag durch den IIS-
Statuscode (304) und die Anzahl der gesendeten Bytes (212).
Diese Datei sieht definitiv anders aus als die beiden vorhergehenden. Die ersten
beiden Zeilen des Listings teilen Ihnen mit, dass Sie IIS 5.0 in der Version 1.0
verwenden.
Möglicherweise haben Sie beim Feld #Date (Datum) eine leichte Unstimmigkeit
im Vergleich zu den vorhergehenden Protokollen festgestellt. Alle Anfragen wur-
den innerhalb von 15 Minuten vorgenommen, und trotzdem zeigt die Datei die
Uhrzeit 13:47:04 an; tatsächlich habe ich um 09:47:04 Uhr auf die Datei zugegrif-
fen, d.h. im Listing 10.3 wurde die Uhrzeit im GMT-Format angegeben. Meine
Zeitzone liegt vier Stunden nach GMT, daher die Differenz.
In der nächsten Zeile #Fields sind weitere interessante Informationen vorhanden.
Auch wenn es auf den ersten Blick nicht den Anschein hat, so sind die letzten bei-
den Zeilen doch eine Tabelle im normalen Zeilen-/Spaltenformat:
Zuerst sehen wir time, d.h. der erste Eintrag in der letzten Zeile bezeichnet den
Zeitpunkt der Anforderung. Es folgt c-ip; der zweite Eintrag in der letzten Zeile
ist also die IP-Adresse des anfordernden Clients. Die Methode cs entspricht dem
Befehl get, die Zeichenkette cs-uri-stem bezieht sich auf die angeforderte URL
bzw. Datei. Der letzte Eintrag sc-status ist der Statuscode – in diesem Fall 304.
Die Einstellungen, die für das Protokollformat »W3C-erweitert« vorgenommen
werden können, werden wir weiter unten in diesem Kapitel im Abschnitt »Erwei-
terte Einstellungen für das Protokoll 'W3C-erweitert'« behandeln. Mehr Informa-
tionen zu diesem Format finden Sie auch unter der URL http://www.w3c.org.
Tipp
Wenn Sie die verschiedenen Protokolldateiformate auf Ihrem Server ver-
wendet haben und nun ein Protokoll in einem bestimmten Format
betrachten wollen, dann können Sie hierfür den Windows-Editor oder
einen beliebigen anderen Texteditor verwenden. Die Protokollformate
Kapitel 10 • Aktivitäten von Sites protokollieren 247
Warnung
Da die Protokollierung standardmäßig aktiviert ist und jeder Seitenzugriff
protokolliert wird, können Ihre Protokolldateien schnell sehr groß wer-
den. Sie sollten die Dateigröße deswegen regelmäßig überprüfen und die
Dateien komprimieren oder sichern, um Festplattenkapazitäten freizu-
stellen.
Abb. 10.1: Das Dialogfeld EIGENSCHAFTEN VON STANDARDWEBSITE enthält unten auf
der Registerkarte WEBSITE die Option PROTOKOLLIERUNG AKTIVIEREN
Abb. 10.3: Auf der Registerkarte ERWEITERTE EIGENSCHAFTEN müssen Sie den Eintrag
PROZESSABRECHNUNG selektieren, um die Prozessorauslastung zu
protokollieren
• Prozessereignis. Dies ist der Prozesstyp, der ein Ereignis auslöst, z.B. eine
Anwendung oder eine Skriptdatei.
• Prozesstyp. Das ausgelöste Ereignis, wie etwa Site-Stop, Site-Pause usw. In-
formationen zu den Ereignissen finden Sie in der Onlinehilfe.
• Benutzerzeit insgesamt. Für den Benutzermodus gespeicherte Prozessorzeit
während des aktuellen Intervalls (in Sekunden).
• Kernelzeit insgesamt. Für den Kernelmodus gespeicherte Gesamtzeit wäh-
rend des aktuellen Intervalls (in Sekunden).
• Seitenfehler insgesamt. Anzahl der aufgetretenen Speicherseitenfehler.
• Prozesse insgesamt. Anzahl an CGI- und anderen systemfremden Anwendun-
gen, die während der Protokollierdauer erstellt wurden.
• Aktive Prozesse. Gesamtzahl der CGI- und systemfremden Anwendungen,
die während der Aufzeichnung des Protokolls ausgeführt wurden.
• Beendete Prozesse insgesamt. Gesamtzahl der CGI- und systemfremden An-
wendungen, deren Ausführung aufgrund der Prozessbeschränkung angehalten
wurden.
Wenn Sie Ihre Einstellungen vorgenommen haben, klicken Sie auf die Schaltflä-
che OK, um wieder zum Dialogfeld EIGENSCHAFTEN DER WEBSITE zurückzuge-
langen. Klicken Sie dort ebenfalls auf OK, um die Änderungen zu speichern und
das Dialogfeld EIGENSCHAFTEN zu schließen.
Hinweis
Die Prozessabrechnung ist nur für Websites, nicht jedoch für FTP-Sites
vorhanden.
Da die Auswahl aller Optionen offensichtlich sehr schnell zu sehr großen Proto-
kolldateien führen würde, sollten Sie bei der Auswahl mit Umsicht vorgehen.
Eintrag Erklärung
Datum Diese Option zeichnet das Datum auf, an dem das Ereignis
stattfand.
Uhrzeit Diese Option zeichnet die Uhrzeit auf, zu der das Ereignis statt-
fand.
Client-IP-Adresse IP-Adresse des anfordernden Clients.
Benutzername Benutzername des anfordernden Clients.
Dienstname Internetdienst des anfordernden Clients.
Servername Name des Servers, der den Protokolleintrag generiert hat.
Server-IP-Adresse IP-Adresse des Servers.
Serveranschluss Der für die Verbindung verwendete Anschluss.
Methode Vom Client durchgeführte Aktion (wie etwa der Befehl get)
URI-Stamm Ressource, auf die der Zugriff durchgeführt wurde (etwa eine
HTML-Seite oder ein ASP-Skript).
Tab. 10.2: Erweiterte Optionen für das Protokollformat »W3C-erweitert«
252 Erweiterte Einstellungen für das Protokoll »W3C-erweitert«
Eintrag Erklärung
URI-Abfrage Vom Client verwendete Suchzeichenketten.
Protokoll-Status Vorgangsstatus im HTTP-Format.
Win32-Status Vorgangsstatus im Windows-Format.
Bytes gesendet Vom Server gesendete Bytes.
Bytes empfangen Vom Server empfangene Bytes.
Aufnahmezeit Dauer der Transaktion.
Protokollversion Vom Client verwendete HTTP- oder FTP-Version.
Benutzer-Agent Vom Client verwendeter Browser.
Cookie Inhalt gesendeter oder empfangener Cookies.
Referenz Name der Site, die den Benutzer auf die aktuelle Seite umgelei-
tet hat (falls anwendbar).
Prozessereignis Typ des ereignisauslösenden Prozesses (Anwendung, CGI-
Skript, usw.).
Prozesstyp Ausgelöstes Ereignis (Site-Stop, Site-Restart etc.).
Benutzerzeit insge- Gesamtzeit der vom Client verwendeten Verbindung.
samt
Kernelzeit insgesamt Von der Verbindung benötigte Zeit im Prozessorkernelmodus.
Seitenfehler insge- Anzahl der aufgetretenen Speicherseitenfehler.
samt
Prozesse insgesamt Anzahl an CGI- und anderen systemfremden Anwendungen,
die während der Protokollierdauer erstellt wurden.
Aktive Prozesse Gesamtzahl der CGI- und der systemfremden Anwendungen,
die während der Aufzeichnung des Protokolls ausgeführt wur-
den.
Beendete Prozesse Gesamtzahl der CGI- und der systemfremden Anwendungen,
insgesamt deren Ausführung während der Sitzung aufgrund der Prozess-
beschränkung angehalten wurden.
Tab. 10.2: Erweiterte Optionen für das Protokollformat »W3C-erweitert« (Forts.)
Diese Optionsliste für das Format »W3C-erweitert« ist recht umfangreich; natür-
lich müssen (und sollten) Sie nicht alle Optionen für die Protokollierung auswäh-
len, aber die eine oder andere Einstellung sollte ihren Zweck für die meisten Sites
erfüllen.
Kapitel 10 • Aktivitäten von Sites protokollieren 253
Hinweis
Bei den hier beschriebenen Optionen ist unter Mitternacht jeweils die
lokale Zeit 00:00 Uhr zu verstehen. Eine Ausnahme bildet das Protokoll
»W3C-erweitert«, welches als Referenz für Mitternacht die Zeit
00:00 Uhr GMT verwendet; Sie können diese Option bei Bedarf jedoch
so ändern, dass sie auf die lokale Zeit gesetzt wird.
Abb. 10.5: Die Registerkarte ALLGEMEINE EIGENSCHAFTEN, auf der Sie die Intervalle
für die Protokollierung festlegen können
10.7 Fazit
Die Protokollierung der Aktivitäten in Ihrem Netzwerk bietet eine Menge Vor-
teile, denn mit ihrer Hilfe können Sie feststellen, wer Ihre Site wie benutzt.
Die Werbeabteilung Ihrer Organisation ist mit Sicherheit an solchen Informatio-
nen interessiert, denn sie können bei der Bestimmung von Webseiten hilfreich
256 Fazit
sein, die noch ein wenig herausgeputzt werden müssen; ferner ist aus Protokollda-
teien ersichtlich, welche Dienste oder Produkte den Kunden am meisten interes-
sieren.
Auch Administratoren könnten sich für die Protokolle interessieren, denn sie
könnten dieser Gruppe bei der Behandlung von Problemen wie toten Links, Ver-
bindungsschwierigkeiten und Überlastungen der Site behilflich sein.
Da die Protokolldateien auch die IP-Adressen und Namen von Besuchern enthal-
ten, sind sie auch aus sicherheitstechnischer Sicht interessant. Wenn Sie feststel-
len, dass ein Benutzer in einen nichtöffentlichen Bereich der Site eingedrungen
ist, können Sie über die Protokolle feststellen, welche Clients zum Zeitpunkt des
Einbruchs mit Ihrem System verbunden waren und welche Ressourcen sie
benutzten.
Die verschiedenen Protokollierungsformate lassen Ihnen die Wahl zwischen
ASCII-Textdateien (Microsoft IIS, NCSA) oder einem Format wie »W3C-erwei-
tert«, das eine Reihe von Benutzereinstellungen bietet. Zum Zweck der Analyse
und der Tendenzbestimmung können Sie die Protokolldateien ferner auch mit
einer Tabellenkalkulation oder einer Datenbankanwendung laden und bearbeiten.
Insgesamt gesehen sind die Protokollierungsfunktionen von IIS 5.0 eine nützliche
Erweiterung dieses Produkts. Sie versorgen Sie mit wertvollen Daten über die
Aktivitäten auf Ihren Web- und FTP-Sites und machen Ihren Job als Webadminis-
trator so einfacher.
Kapitel 11
Leistungsoptimierung
Die Leistungsoptimierung ist für jeden Webserver ein Muss. Die Gründe dafür
sind vielfältig, haben aber alle ihre Berechtigung. Websites beanspruchen die
Ressourcen eines Servers weitaus mehr als FTP-Sites, denn eine FTP-Site stellt
lediglich Dateien bereit, während eine Website neben statischen HTML-Seiten
auch serverseitige Anwendungen anbietet. Wie bereits in den vorhergehenden
Kapiteln angemerkt wurde, lassen sich mehrere Anwendungen im gleichen Pro-
zess wie IIS oder in parallel ablaufenden Prozessen ausführen.
Wenn Sie wollen, dass Ihre Besucher beim Besuch Ihrer Website Spaß haben und
sich nicht über überlastete Server oder langes Warten auf Seiten und Anwendun-
gen ärgern müssen, dann sollten Sie die Informationen, die Sie in diesem Kapitel
finden, benutzen, um aus Ihrem Server das Optimum an Leistung herauszuholen.
Leistungsbeeinflussende Faktoren finden sich unter Hardware wie Software. Wir
werden die Leistungsüberwachung unter verschiedenen Gesichtspunkten betrach-
ten: Wie überprüft und optimiert man die Systemleistung? Welche Überwa-
chungsprogramme sind vorhanden? Wie sind die Festplatten zu optimieren?
Es ist zuallererst wichtig, eine Messlatte für die Leistung zu erstellen. Daraus
ergibt sich, dass Überprüfung und Optimierung ständige Arbeiten sind, die regel-
mäßig auszuführen sind. Mit Hilfe der hier gegebenen Informationen werden Sie
recht schnell ein Gefühl dafür entwickeln, wie Serverressourcen benutzt werden
und wann die Zeit für Upgrade oder Austausch von Hardware gekommen ist.
Abb. 11.1: Der WINDOWS TASK-MANAGER ist ein sehr praktisches Programm zur
Überwachung der Systemressourcen, die jeder ausgeführte Prozess
beansprucht
• PID. Windows NT und 2000 vergeben eine Prozesskennung (Process ID, PID)
ähnlich der unter UNIX und Linux verwendeten. Die PID wird intern durch das
Betriebssystem verwendet, um eine ausgeführte Anwendung oder einen Pro-
zess schnell aufzufinden. Wird die Anwendung beendet oder neu gestartet,
dann ist die PID nicht mehr dieselbe.
• CPU-Nutzung. In dieser Spalte steht, wie viel Prozessorzeit der jeweilige Pro-
zess beansprucht. Wenn ein Prozess 85% oder mehr verwendet, dann arbeitet
entweder die Anwendung nicht einwandfrei, oder Sie brauchen dringend einen
neuen Prozessor.
• CPU-Zeit. Dies ist die Prozessorgesamtzeit, die der Prozess seit seinem Start
beansprucht hat. Hierbei hat der Leerlaufprozess normalerweise den höchsten
Wert.
• Speichernutzung. Dies ist die Gesamtanzahl an Seiten, die dieser Prozess mo-
mentan im Speicher hält.
Kapitel 11 • Leistungsoptimierung 261
Tipp
Wenn Sie sowohl Fehlertoleranz als auch optimale Leistung benötigen,
dann sollten Sie über die Implementation einer hardwaregestützten
Lösung (wie etwa eines Hardware-RAID-Controllers) nachdenken. Hard-
warecontroller berechnen die Paritätsdaten selbst und belasten die CPU
aus diesem Grund nicht.
Dies sind nur ein paar der Möglichkeiten, die Leistung Ihres Servers zu optimie-
ren (und so Ihre Konkurrenten auszustechen). Zugegeben: Diese Verbesserungen
werden Ihren Webserver nicht ins Guinness-Buch der Rekorde katapultieren, aber
sie können Ihnen helfen, das letzte Quäntchen Leistung aus Ihren Hardwareinves-
titionen herauszukitzeln.
Kapitel 11 • Leistungsoptimierung 263
11.2 Speicherverwaltung
Neben dem Prozessor ist bei einem Computer der Arbeitsspeicher einer der wich-
tigsten Faktoren mit Auswirkung auf die Systemleistung. Eine alte Mär besagte,
dass ein Computer umso schneller war, je mehr RAM er beinhaltete. Dies galt
auch für Windows NT 4.0 – bis die Messlatte von 128 Mbyte erreicht worden
war. Zusätzlich eingebauter Arbeitsspeicher hatte nicht den gleichen Steigerungs-
effekt auf die Systemleistung, d.h. die Investitionen zahlten sich nicht mehr auf
gleiche Weise aus wie zuvor. Bei der Entwicklung von Windows 2000 hat man
sich dieses Problems angenommen, und so verläuft die Leistungssteigerung nun
äquivalent zum RAM-Ausbau.
Wenn man über den Arbeitsspeicher eines Servers redet, dann sind einige Aspekte
in Betracht zu ziehen. Erstens: Wenn auf einem Server nicht viel RAM installiert
ist, dann lagert Windows die Daten auf die Festplatte aus. Dies kann an zwei
Fronten zu Leistungseinbußen führen, denn eine hemmungslose Auslagerung
reduziert nicht nur die Anwendungsleistung, sondern stört auch reguläre Schreib-
und Lesevorgänge von Daten.
Ein weiterer Grund, der dafür spricht, möglichst viel RAM in den Server zu
packen, ist die Tatsache, dass IIS und Windows 2000 diesen Speicher als Cache
verwenden werden. Arbeitsspeicher arbeitet wesentlich schneller als eine Fest-
platte, insofern macht es Sinn, häufig benötigte Dateien statt auf der Festplatte im
Speicher abzulegen und den Zugriff so zu beschleunigen. Dieser Zwischenspei-
cher ist tatsächlich das RAM des Computers und nicht der Cachespeicher, der
zwischen Prozessor und Speicher sitzt. IIS speichert einen Dateihandle im Cache,
Windows 2000 die Datei selbst.
Eine Möglichkeit, die Verwendung des Arbeitsspeichers zu optimieren, besteht
darin, den Rechner unter Windows 2000 als Anwendungsserver (statt als Datei-
server) zu konfigurieren. Und auch wenn Sie theoretisch Dateien bereitstellen,
sollten Sie Windows 2000 so konfigurieren, dass es seinen Arbeitsspeicher wie
auf einem Anwendungsserver verwendet. Gehen Sie dazu wie folgt vor:
1. Klicken Sie auf START/EINSTELLUNGEN/NETZWERK- UND DFÜ-VERBINDUN-
GEN.
2. Klicken Sie mit der rechten Maustaste auf das Symbol LAN-VERBINDUNG und
wählen Sie den Eintrag EIGENSCHAFTEN. Das Fenster EIGENSCHAFTEN (Abbil-
dung 11.2) öffnet sich.
3. Doppelklicken Sie auf das Symbol DATEI- UND DRUCKERFREIGABE, um das
Dialogfeld EIGENSCHAFTEN VON DATEI- UND DRUCKERFREIGABE FÜR MICRO-
SOFT-NETZWERKE zu öffnen.
Die Speicherleistung können Sie bei Bedarf mit den entsprechenden Leistungsin-
dikatoren im Systemmonitor überwachen. Es sind auch Indikatoren für den Cache
vorhanden, die sich ebenfalls verwenden lassen. Diese sind:
• Datei-Cache-Leerungen. Dieser Leistungsindikator muss die Anzahl der
Dateicache-Leerungen, die seit dem Serverstart durchgeführt wurden.
• Datei-Cache-Treffer. Dies ist die Gesamtzahl erfolgter Cache-Lookups.
• Datei-Cache-Treffer (%). Dieser Prozentwert bezeichnet den Anteil der
Cacheanfragen, die erfolgreich beantwortet wurden.
• Datei-Cache-Fehler. Dies ist die Gesamtzahl der Cacheanfragen, die nicht er-
folgreich beantwortet werden konnten.
Zugegeben: Die Liste mit IIS-Speicherobjekten ist wirklich nicht besonders lang.
Aber es gibt noch ein paar weitere Indikatoren, die den BLOB-Cache (Binary
Large Object, großes Binärobjekt) und den URI-Cache überwachen.
Kapitel 11 • Leistungsoptimierung 265
Damit Sie diese Indikatoren einsetzen können, müssen Sie zunächst den System-
monitor ausführen. Klicken Sie dann in der Schaltflächenleiste auf die Schaltflä-
che HINZUFÜGEN (erkennbar am Pluszeichen) und wählen Sie aus der Liste der
Leistungsobjekte den Eintrag INTERNET-INFORMATIONSDIENSTE GLOBAL. Nun
werden die vorhandenen Leistungsindikatoren angezeigt.
Hinweis
Verwechseln Sie die hier vorhandenen Cache-Indikatoren nicht mit
denen, die im Systemmonitor unter dem Objekt Speicher zusammenge-
fasst sind.
Wie können Sie nun mit diesen Daten die Serverleistung optimieren? Grundsätz-
lich lässt die Überwachung erfolgreicher und fehlgeschlagener Cachetreffer
Rückschlüsse darauf zu, ob Ihr Server genug RAM hat oder nicht. Treten zahlrei-
che fehlgeschlagene Cacheanfragen auf, dann heißt das nichts anderes, als dass
der IIS die benötigten Dateien auf der Festplatte suchen muss, da sie im Speicher
nicht vorhanden sind. Sie können dies auch verifizieren, indem Sie den Leistungs-
indikator PHYSIKALISCHER DATENTRÄGER: ZEIT (%) in die gleiche Grafik inte-
grieren. Wenn auch dieser Indikator einen hohen Wert hat, dann können Sie ganz
sicher sein, dass Sie mehr RAM benötigen. Ist der maximale Speicherausbau
Ihres Servers bereits erreicht, dann sollten Sie über ein Upgrade des Mainboards
oder eine Lösung mit Clustering nachdenken.
Eine andere Methode der Leistungsoptimierung über den Speicherausbau ist die
Datenflussschätzung. Bei diesem Vorgang nennen Sie IIS den von Ihnen erwarte-
ten Serverdatenverkehr, und IIS nimmt dann die Speichereinstellungen entspre-
chend vor. Wenn Sie den Wert ein wenig höher einstellen als den tatsächlichen
oder geschätzten Wert, dann haben Sie bereits einen Leistungsgewinn erzielt.
Durch eine viel zu hohe Einstellung hingegen verschwenden Sie Speicherressour-
cen, die an anderer Stelle vielleicht gebraucht werden könnten; auch wenn Ihr
Server eine Website bereitstellt, so wird er trotzdem für die Ausführung der einen
oder anderen Anwendung verwendet werden, und auch Windows 2000 selbst
benötigt ein paar Ressourcen, um diverse Dienste im Hintergrund ausführen zu
können, die für die Betriebssystemfunktionen unerlässlich sind.
Aber wie können Sie Ihren Datenverkehr genau einschätzen? Es ist besser, nicht
ins Blaue hinein zu schätzen, sondern im Systemmonitor die Leistungsindikato-
ren VERBINDUNGSVERSUCHE INSGESAMT und AKTUELLE VERBINDUNGEN zu
überwachen. Diese Indikatoren finden Sie unter dem Objekt WWW-DIENST.
Sammeln Sie für etwa eine Woche (einschließlich Wochenende) Daten für diese
beiden Indikatoren und verwenden Sie diese Zahlen dann als Ausgangspunkt für
Ihre Schätzung.
Um die Anzahl der täglichen Verbindungen für den Webserver einzustellen, öff-
nen Sie das Dialogfeld EIGENSCHAFTEN der Website und aktivieren die Register-
karte LEISTUNG. In Abbildung 11.3 sehen Sie im Abschnitt LEISTUNGSOPTIMIE-
266 Speicherverwaltung
RUNG einen Schiebregler mit drei Skalenpunkten, welche die Anzahl der Zugriffe
bezeichnen: WENIGER ALS 10.000, WENIGER ALS 100.000 oder MEHR ALS
100.000 pro Tag. Verschieben Sie den Regler so, dass die Einstellung mit den von
Ihnen anhand der Protokolldateien ermittelten Werten übereinstimmt.
Wenn Sie den Regler bewegen, werden Sie feststellen, dass er nicht so ganz wie
ein normaler Schiebregler funktioniert; Sie können nur eine der drei angegebenen
Einstellungen wählen, Zwischenwerte sind nicht möglich. Dies widerspricht
natürlich in gewisser Weise meiner obigen Aufforderung, eine »ein wenig
höhere« Einstellung vorzunehmen als die tatsächlichen Werte. Verwenden Sie
also die nächsthöhere Einstellung.
Bevor wir diesen Abschnitt über den Arbeitsspeicher abschließen, will ich noch
einmal wiederholen, dass Sie so viel RAM wie irgend möglich in Ihren Server
packen sollten – insbesondere, wenn Sie Skripts und Anwendungen auf dem Ser-
ver ausführen. Die Investitionen werden sich bereits mittelfristig auszahlen, denn
die Amortisationsrate ist hier recht kurz.
Kapitel 11 • Leistungsoptimierung 267
11.3 Prozessorauslastung
Wann immer von der Optimierung der Serverleistung die Rede ist, muss auch die
CPU berücksichtigt werden – schließlich ist sie für die Verarbeitung der Anwei-
sungen zuständig, die die Bereitstellung von Webseiten und die Ausführung von
Anwendungen ermöglichen. Und dort sollte selbstredend kein Engpass entstehen!
Eine Möglichkeit zur Feststellung, ob die CPU als Flaschenhals in Ihrem System
agiert, ist das Überwachen einiger Indikatoren zur Ermittlung der Prozessorleis-
tung. Der wichtigste Indikator ist in diesem Zusammenhang sicher die PROZES-
SORZEIT (%), aber ich empfehle auch INTERRUPTS/S – auf diese Weise stellen Sie
fest, wer oder was den Prozessor übermäßig verwendet. Beachten Sie jedoch,
dass eine hohe Anzahl von Interrupts pro Sekunde nicht unbedingt das Ergebnis
einer anspruchsvollen Anwendung sein muss; hier können auch eine minderwer-
tige Netzwerkkarte oder ein anderes E/A-Gerät der Verursacher sein.
Ich erwähne dies, da ich eine solche Netzwerkkarte hatte, und es hat eine ganze
Weile gedauert, bis ich herausfand, dass sie der Schuldige war. Das ursprüngliche
Problem war nämlich, dass mein Computer extrem langsam war. Ich verwendete
also den Systemmonitor, um festzustellen, wann die hohe Prozessorauslastung
auftrat. Den Leistungsindikator INTERRUPTS/S hatte ich eigentlich nur versehent-
lich hinzugefügt, aber das war mein Glück.
Abbildung 11.4 zeigt im Leistungsmonitor den Verlauf zweier Indikatoren.
Unglücklicherweise handelt es sich hier um Graustufenabbildungen, d.h. Sie
müssen mir vertrauen, wenn ich behaupte, dass die Kurve mit den hohen Aus-
schlägen den Indikator für die PROZESSORZEIT (%) und die andere, kaum sicht-
bare den für die INTERRUPTS/S darstellt. Wie der Grafik zu entnehmen ist, habe
ich die unbrauchbare Netzwerkkarte inzwischen weggeworfen.
Die in Abbildung 11.4 angezeigten Spitzenwerte weisen keineswegs darauf hin,
dass meine CPU einen Engpass darstellt, denn sie dauern immer nur einen kurzen
Moment. Ersetzt werden sollte der Prozessor, wenn dieser Wert die Marke von
80% dauerhaft überschreitet; wenn jedoch auch der Wert des Indikators INTER-
RUPTS/S einen ständigen hohen Wert hat, sollten Sie die CPU erst ersetzen, nach-
dem Sie sich vergewissert haben, dass alle eingebauten E/A-Karten in Ordnung
sind.
Welche Möglichkeiten haben Sie, wenn Sie feststellen, dass die Prozessorauslas-
tung sehr hoch ist? Nun, Sie sollten die CPU noch nicht gleich ersetzen, insbeson-
dere wenn Sie die Unternehmensführung gerade erst erfolgreich von der Notwen-
digkeit eines Webservers überzeugt haben; man ist dort sicher nicht erfreut über
den Austausch des »neuen« Prozessors, und auch das Vertrauen in Ihre Fähigkei-
ten könnte durch ein solches Vorgehen stark beschädigt werden.
268 Prozessorauslastung
Abb. 11.4: Der Systemmonitor zeigt ein paar Spitzenwerte beim Leistungsindikator
PROZESSORZEIT (%) an
Falls die entsprechenden Bestände vorhanden sind, können Sie die Website oder -
sites auch über mehrere Server verteilen und die Möglichkeit der Replikation
benutzen, um einen Server zu entlasten. Denkbar ist auch der Einbau zusätzlicher
Prozessoren im Server. Windows 2000 Server unterstützt bis zu acht Server in
einem Rechner und Windows 2000 Data Center Server kann sogar mit
32 Prozessoren gleichzeitig arbeiten. Aber Data Center Server werden Sie wohl
kaum zum Betreiben einer Website verwenden.
Ein weiterer Ansatz, der ein Hardwareupgrade unnötig macht, ist die Verschie-
bung von prozessorintensiven Anwendungen auf einen anderen Server. Auf diese
Weise könnten Sie beispielsweise dann vorgehen, wenn Sie eine Website mit
ASP-Seiten und eine Datenbank wie SQL Server auf ein und demselben Server
betreiben; in diesem Fall sollten Sie die Datenbank auf einen anderen Server ver-
schieben, um den Webserver zu entlasten.
IIS 5.0 bringt auch noch ein weiteres neues Feature mit, nämlich die Prozessbe-
schränkung. Durch Implementierung der Prozessbeschränkung können Sie die
Zeit, die der Prozessor Out-of-Process-Anwendungen zuteilt, effizient beschnei-
den. Eine Anwendungsmöglichkeit für diese Funktion währe ein Hostdienst, der
mehrere Websites auf einem einzigen Server verwaltet; Sie können hier die Res-
sourcen für eine Site mit vielen Anwendungen oder CGI-Skripts beschränken, die
andernfalls unnötig viele CPU-Ressourcen mit Beschlag belegen und dadurch
andere Sites kalt stellen würde.
Kapitel 11 • Leistungsoptimierung 269
Die Prozessbeschränkung kann auf einzelne Websites angewandt werden, d.h. Sie
können die so genannten »Beschränkungsebenen« konfigurieren. Über diese
Funktion können Sie veranlassen, dass IIS ein Ereignis protokolliert, wenn eine
Site während eines bestimmten Zeitraums die Prozessorzeitbeschränkung über-
schreitet; in diesem Fall werden als Reaktion Folgeereignisse ausgelöst, die je
nach Beschränkungsebene anders aussehen:
• Ebene 1. Auf dieser Ebene wird lediglich ein Ereignis in das Ereignisprotokoll
von Windows 2000 geschrieben.
• Ebene 2. Damit diese Ebene erreicht wird, muss die Prozessorzeit einen Min-
destwert von 150% des Grenzwerts überschreiten. In diesem Fall wird Ereignis
in das Ereignisprotokoll von Windows 2000 geschrieben, und die Prozessor-
priorität aller Out-of-Process-Anwendungen wird auf Leerlauf zurückgesetzt.
• Ebene 3. Damit diese Ebene erreicht wird, muss die Prozessorzeit einen Min-
destwert von 200% des Grenzwerts überschreiten. In diesem Fall wird Ereignis
in das Ereignisprotokoll von Windows 2000 geschrieben, und alle Out-of-
Process-Anwendungen auf der Website werden beendet.
Die Prozessabrechnung wird alle 24 Stunden zurückgesetzt. Dieses Verhalten
kann ein Administrator beeinflussen, indem er die Website beendet und dann neu
startet; Website-Operatoren können die Einstellung hingegen nicht steuern.
Tipp
Wenn auf Ihrer Seite CGI-Anwendungen benutzt werden und Sie die
Prozessbeschränkung einsetzen, dann sollten Sie den Timeout-Wert für
Ihre CGI-Anwendungen herabsetzen. Falls nämlich eine CGI-Anwen-
dung fehlschlägt, wird der Thread nicht mehr freigegeben, bis der Time-
out erreicht wird.
Betrachten wir nun einmal, wie die Prozessbeschränkung konfiguriert wird. Öff-
nen Sie zunächst das Dialogfeld EIGENSCHAFTEN der Website, auf der Sie die
Prozessbeschränkung einsetzen wollen, und wählen Sie dort die Registerkarte
LEISTUNG. Abbildung 11.5 zeigt diese Registerkarte für die Website von »GK
Computer Consulting«, die auf meinem Server liegt.
Markieren Sie das Kontrollkästchen PROZESSBESCHRÄNKUNG AKTIVIEREN unten
auf der Registerkarte und geben Sie im Textfeld MAXIMALE CPU-VERWENDUNG
den gewünschten Prozentwert ein. Wenn Sie die Ebenen 2 und 3 der Prozessbe-
schränkung aktivieren wollen, markieren Sie auch das Kontrollkästchen
BESCHRÄNKUNGEN ERZWINGEN.
270 Netzwerkkapazität
Abb. 11.5: Auf der Registerkarte LEISTUNG können Sie die Prozessbeschränkung für
einzelne Websites aktivieren und erzwingen
11.4 Netzwerkkapazität
Bis hierher wurde die Leistungsoptimierung bereits für Speicher, Festplatten und
Prozessor beschrieben. Es gibt aber noch einen anderen Aspekt, der bei der (rea-
len wie auch wahrgenommenen) Leistung Ihrer Website eine wesentliche Rolle
spielt: Das Netzwerk.
Wie allgemein bekannt, kann sich die Netzwerkkapazität negativ auf die Leistung
eines Servers bei der Datenübertragung auswirken. Ein Webserver überträgt eben
einfach nur Daten über das Netzwerk – egal ob Internet oder Intranet. Und Sie
können den schnellsten Prozessor aller Zeiten in Ihrem Rechner verwenden und
diesen mit Arbeitsspeicher voll packen, wie Sie wollen: Wenn Netzwerkband-
breite oder Netzwerkkarte eine schnelle Übertragung der Daten verhindern, gibt
es allerseits lange Wartezeiten (und ebensolche Gesichter).
Und auch wenn Sie die benötigte (oder gar die gesamte verfügbare) Bandbreite
zur Verfügung haben, kann es trotzdem Probleme mit langsam oder gar nicht
gesendeten Daten geben. Dies kann für einen Webserver ein größeres Problem
sein, denn er muss unter TCP/IP laufen.
Kapitel 11 • Leistungsoptimierung 271
Dabei ist nicht TCP/IP das Problem. Vielmehr möchte ich unterstreichen, dass
man bei der Entwicklung von TCP/IP ein verbindungsorientiertes, zuverlässiges
Protokoll im Sinn hatte, d.h. es werden eine Menge Reserven zurückgehalten,
damit alle Daten auch wirklich in unveränderter Form ihren Bestimmungsort
erreichen. Klappt dies nicht, dann sendet TCP/IP die Daten eben erneut. Da
dadurch aber die Bandbreite stark in Mitleidenschaft gezogen wird, sollte die
Anzahl dieser Neuübertragungen auf ein Minimum reduziert werden.
Wenn eine der Sites auf Ihrem Server die gesamte Bandbreite für sich benutzt,
dann bekommen die anderen Sites ihre Daten nicht mehr verschickt. Also müssen
Sie die Bandbreite beschränken.
Die Bandbreitenbeschränkung beschränkt nur statische HTML-Seiten. Sie kön-
nen sie auf Computerebene oder für einzelne Websites konfigurieren, wobei Ein-
stellungen auf Websiteebene Vorrang vor den Computereinstellungen haben.
Die Feststellung, ob ein Problem mit der Netzwerkbandbreite vorliegt, treffen Sie
wieder mit dem Systemmonitor. Abbildung 11.6 zeigt erneut das entsprechende
Fenster, wobei diesmal ein paar netzwerkbezogene Leistungsindikatoren hinzuge-
fügt wurden.
In der oberen Zeile sehen Sie die AKTUELLE BANDBREITE. Der Wert liegt etwa
bei 10, d.h. meine Netzwerkkarte arbeitet mit einer Übertragungsrate von
10 Mbps. Dies ist die für meine Netzwerkverbindung vorhandene Gesamtband-
breite.
Der nächsthöhere Indikator ist die GESAMTANZAHL BYTES/S. Er zeigt die Rate an,
mit der die Bytes an der Schnittstelle empfangen und gesendet werden. Mit Hilfe
grundlegender Mathematikkenntnisse und dem Wissen, dass ein Byte acht Bits
entspricht, können Sie hier bereits bestimmen, wie gut Ihre Bandbreite genutzt
wird.
Der letzte von mir hinzugefügte Leistungsindikator hat keinen sehr hohen Wert.
Ja, er hat sich sogar nicht einmal verändert, was hier perfekt ist, denn er misst die
Länge der Ausgabewarteschlangen in Paketen und sollte den Wert 2 niemals über-
schreiten. Tut er es doch, dann weist dies darauf hin, dass Daten nicht gesendet,
sondern auf dem Server zurückgehalten werden; Ursache hierfür könnte eine
langsame Netzwerkkarte sein, d.h. Sie sollten dann zu einer Karte mit 100 Mbps
wechseln oder sogar den Erwerb einer Ethernetkarte mit einer Rate von 1 Gbps in
Betracht ziehen. Vielleicht liegt aber auch nur ein Engpass in Ihrem Datenstrom
vor – z.B. bei Ihrem Internetanbieter.
Eine Möglichkeit, die Auslastung der Netzwerkverbindung zu steuern, besteht in
der Beschränkung der Anzahl gleichzeitiger Verbindungen mit einer Website.
Dadurch können Sie Ressourcen für andere Dienste freistellen, die die gleiche
Verbindung nutzen. Wenn Sie beispielsweise Ihren Webserver auch für E-Mail-
Dienste unter Microsoft Exchange Server nutzen und Ihre Website die gesamte
vorhandene Bandbreite nutzt, dann kann Exchange die Mails nicht mehr über den
Internetmailanschluss versenden, oder aber die Versendung wird zumindest ver-
zögert.
den bei 63.360 Bits pro Seite; der Multiplikator 1,5 resultiert aus einer Reserve
von 4 Bits, die bei der Übertragung von 8 Datenbits benötigt wird. Beachten Sie,
dass sich diese Werte nur auf reine Textseiten beziehen und Grafiken noch nicht
mit berücksichtigen. Um festzustellen, wie lange der Download einer bestimmten
Grafik dauert, verwende ich gerne Microsoft FrontPage; wenn Sie eine Grafik auf
einer Seite einfügen, zeigt Ihnen das Programm die geschätzte Downloadzeit in
der Statusleiste unten im Bearbeitungsfenster an. Diese Zeitangabe bezieht sich
auf eine Verbindungsgeschwindigkeit von 28,8 Kbps.
Teilen Sie nun die Geschwindigkeit der gewünschten Verbindung durch die
durchschnittliche Dateigröße. Bei eine T1-Leitung wären dies etwa 24 Seiten pro
Sekunde.
Sie können natürlich auch eine andere Formel zur Berechnung der Treffer oder
Verbindungen verwenden, die von Ihrer Verbindungsform unterstützt werden.
Wir wollen hier einmal die Geschwindigkeit einer T1-Verbindung (1,54 Mbps)
als Beispielfaktor benutzen. Teilen Sie diese 1,54 Mbps einfach durch die 12 Bits
(8 Datenbits/Byte + 4 Reservebits) und Sie erhalten 125 Kbyte pro Sekunde.
Nun hat ein Tag 86.400 Sekunden. Wenn wir diese Anzahl mit den oben errechne-
ten 125 Kbyte/s multiplizieren, dann erhalten wir ein Tagespensum von
10.777.994 Kbyte. Wenn wir diese Summe (durch Division mit 1.048.576) in
Gbyte umwandeln, erhalten wir einen Wert von 10,3 Gbyte pro Tag.
Wenn Sie nun – der Einfachheit halber – eine durchschnittliche Dateigröße von
20 Kbyte annehmen, dann können wir die 10.777.994 Kbyte/Tag durch 20 teilen
und erhalten täglich 538.899,7 Treffer.
Die Tabelle 11.1 zeigt die Anzahl gleichzeitiger Verbindungen für verbreitete Ver-
bindungstypen.
Sie können das Programm aufrufen, indem Sie in die Adresszeile Ihres Webbrow-
sers die Adresse http://localhost/iishelp eingeben. Blenden Sie dann nachein-
ander die Einträge Administration/Serververwaltung/Leistungsoptimierung/Netz-
werkkapazität/Berechnen der Verbindungsleistung ein.
Hinweis
Der Text in diesem Dialogfeld erläutert – wie bereits erwähnt –, dass ein
hier eingesetzter Wert Vorrang vor den Einstellungen hat, die für den
gesamten IIS-Server vorgenommen wurden.
Kapitel 11 • Leistungsoptimierung 275
Abb. 11.7: Das Dialogfeld EIGENSCHAFTEN VON *COMPUTER mit der Einstellung
BANDBREITENBESCHRÄNKUNG AKTIVIEREN
Abb. 11.8: Das Dialogfeld EIGENSCHAFTEN einer Website mit der Registerkarte
LEISTUNG, auf der Sie die Bandbreitenbeschränkung aktivieren können
276 Netzwerkkapazität
11.4.5 HTTP-Keep-Alives
Wenn ein Browser eine Webseite von Ihrem Server anfordert, dann werden tat-
sächlich zahlreiche Anforderungen gesendet, und zwar immer dann, wenn Daten
benötigt werden. Wenn die Seite nun Grafiken enthält, fordert der Browser
zunächst den Textteil an, dann die Grafiken. Diese zahlreichen Anfragen wirken
sich natürlich nicht gerade positiv auf die Bandbreite und die Serverleistung aus.
Browser haben die Neigung, eine Verbindung für mehrere aufeinanderfolgende
Anfragen geöffnet zu halten. IIS aktiviert diese »HTTP-Keep-Alives« standard-
Kapitel 11 • Leistungsoptimierung 277
11.4.6 HTTP-Komprimierung
IIS 5.0 kann die Komprimierung von HTTP-Daten unterstützen, um das Daten-
aufkommen für Browser zu senken, die diese Funktion unterstützen. Da die
Option sich aber schnell als zweischneidiges Schwert erweisen kann, sollten Sie
gut abwägen, ob Sie sie aktivieren wollen.
278 Netzwerkkapazität
Wenn Sie sich zugunsten der Komprimierung entscheiden, dann beachten Sie,
dass IIS für deren Durchführung natürlich auch Prozessorressourcen benötigt.
Dadurch kann die Serverleistung insgesamt beeinträchtigt werden, wodurch der
durch die Komprimierung erzielte Leistungsgewinn schnell wieder dahin ist.
Aus diesem Grund sollten Sie die Prozessorauslastung vor und nach der Imple-
mentierung der Komprimierung beobachten. Wenn die Auslastung bereits vorher
die 80%-Marke dauerhaft überschreitet, kommt eine Komprimierung selbstver-
ständlich nicht in Frage.
Die HTTP-Komprimierung wird für den gesamten IIS-Server konfiguriert. Des-
wegen müssen Sie, wenn Sie sie aktivieren wollen, das Dialogfeld EIGENSCHAF-
TEN des Servers selbst (Abbildung 11.10) öffnen. Klicken Sie zu diesem Zweck
mit der rechten Maustaste auf das Computersymbol im Internetdienste-Manager
und wählen Sie im Kontextmenü den Eintrag EIGENSCHAFTEN.
Hinweis
Das Temporärverzeichnis für die komprimierten Dateien muss auf der
lokalen Festplatte liegen, die ihrerseits NTFS-formatiert sein muss.
280 Fazit
11.5 Fazit
Die Leistungsoptimierung auf dem Server ist eine permanente Aufgabe. Die Aus-
lastung der Komponenten ändert sich, neue Hardware wird in den Server inte-
griert – all das wirkt sich auf die Leistung aus.
Durch Verwendung der im IIS und in Windows 2000 vorhandenen Überwa-
chungsprogramme und -prozeduren können Sie bestimmen, welche Wege bei der
Optimierung der Serverleistung einzuschlagen sind. Dies gilt nicht nur für Webs-
eiten und FTP-Dateien, sondern auch für die Verarbeitung von Anwendungen, die
auf dem Server ausgeführt werden.
Wenn die Leistung Ihres Webservers für Sie ein wesentlicher Aspekt ist, dann
stellen Sie sicher, dass auf diesem Server keine Mail- oder anderen Dienste ausge-
führt werden. Auf diese Weise ermöglichen Sie IIS die optimale Nutzung der auf
dem Server vorhandenen Ressourcen.
Kapitel 12
Replikation und
Clusterunterstützung
In diesem Kapitel behandeln wir einen etwas gängigeren Ansatz zur Erzielung
einer umfassend skalierbaren Architektur, die nicht nur Fehlertoleranz gewähr-
leistet, sondern es Ihnen auch ermöglicht, die Arbeitslast auf alle Server zu vertei-
len. Ich werde Ihnen hier zeigen, wie die Programme, die für eine »Architektur
der umfassenden Verfügbarkeit« erforderlich sind, installiert, konfiguriert und
verwaltet werden.
Die folgenden Punkte werden an dieser Stelle beschrieben:
• Clustering mit IIS 5.0
• Lastenausgleich mit Hilfe des Netzwerklastenausgleichs
• Inhaltsreplikation innerhalb des Clusters
• Replikationstechnologien wie das Verteilte Dateisystem (DFS), die Content
Replication-Komponente (aus Microsoft Site Server), Robocopy.exe und IIS-
Sync.exe.
Mit dem Netzwerklastenausgleich von Windows 2000 Server können Sie eine
Architektur erstellen, mit der Sie nachts gut schlafen können. Der Netzwerklas-
tenausgleich stellt Ihren Clients die Web- oder FTP-Site oder eine andere Anwen-
dung genau dann bereit, wenn diese sie brauchen. Außerdem nimmt der Netzwer-
klastenausgleich einen ausgefallenen Host sofort aus dem Netzwerk. Der NLBS
(Network Load Balancing Service, Netzwerklastenausgleichsdienst) ermöglicht
Ihnen die Skalierung Ihres Clusters und erlaubt Ihnen die Erweiterung auf bis zu
32 Server.
Die wichtigste Komponente des Netzwerklastenausgleichs ist die VNIC (Virtual
Network Interface Card, virtuelle Netzwerkkarte). Sie ist die Basis des NLBS-
Dienstes, denn sie ermöglicht die Zusammenfassung der 32 Server zu einem
Cluster. Die VNIC wird im Laufe des Kapitels noch ausführlich beschrieben.
In einem Clustersystem muss der Inhalt selbstverständlich synchronisiert werden,
was uns zum nächsten Punkt führt: Der Replikation zwischen den Hosts in einem
Cluster. Die Clusterunterstützung ist unbestritten eine Notwendigkeit, aber ohne
identische Inhalte bei allen Partnern wird ein Cluster ad absurdum geführt. Micro-
soft hat verschiedene Technologien bereitgestellt, die eine automatische Konsis-
tenzherstellung im gesamten Cluster sicherstellen sollen. Im weiteren Verlauf des
Kapitels soll auch auf diese Lösungen, ihre Konfiguration und Implementation
eingegangen werden, und Sie werden sehen, welche Technologie Ihren Cluster
am besten konsolidiert.
auch verfügbar ist: Immer, denn die Clients benötigen sie. Diese Idee führte zur
Entwicklung des Clusterkonzepts, bei dem eine Gruppe ähnlicher Computer
zusammengefasst wird, um die Arbeit eines einzigen Computers zu erledigen.
Robert Metcalfe, der Erfinder des Ethernet, hat das vielzitierte Metcalfesche
Gesetz aufgestellt:
»Kombinieren Sie eine beliebige Anzahl N von Maschinen – seien es Com-
puter, Telefone oder sogar Autos – miteinander, und Sie erhalten im Ergeb-
nis eine um N potenzierte Leistungssteigerung. Denken Sie an Telefone
ohne Netzwerke, oder Autos ohne Straßen. Und nun stellen Sie sich einmal
vor, welch exponentielle Macht sich aus der Verknüpfung von Abermillio-
nen Computern ergeben würde.«
Genau das ist Clustering: Das Zusammenführen mehrerer Computer zum Zweck
der Steigerung von Zuverlässigkeit, Leistung und Skalierbarkeit. Mit Clustering
erstellt man einen »virtuellen« Server (ein logischer Server, der aus mehreren
physikalischen Servern besteht), um lastintensive Anwendungen ausführen, Feh-
lertoleranz gewährleisten oder systemkritische Anwendungen durchführen zu
können.
Ein Beispiel für eine clusterunterstützte Netzwerkanwendung wäre eine Gruppe
von vier Servern, auf denen jeweils eine Instanz von IIS ausgeführt wird und auf
denen die Intranetwebseiten eines Krankenhauses abgelegt sind. Auf diesen Sei-
ten sind wichtige Patientendaten vorhanden, etwa Aufzeichnungen über Allergien
oder Behandlungen. Selbstverständlich müssen die Seiten rund um die Uhr zur
Verfügung stehen. Wenn diese Website lediglich über einen Rechner verfügbar
gemacht wäre, so wäre Zeit für das Herunterfahren eines Servers (etwa zu War-
tungszwecken) oder gar für einen Ausfall nicht vorhanden; in einem solchen Fall
hätten die Ärzte keinen Zugriff auf die Patientendaten, was zu ziemlichen
Schwierigkeiten führen könnte. Bei einer clustergestützten Lösung hingegen träte
dieses Problem nicht auf, denn wenn einer der beteiligten Server vom Netz ginge
bzw. genommen würde, dann werden noch immer drei Instanzen von IIS auf den
anderen Servern ausgeführt und können die benötigten Daten den Clients bereit-
stellen.
Microsofts NLBS-Dienst ermöglicht diese Art des Clusterings. Sie können mit
Hilfe dieses Dienstes aus mehreren Computern (oder Hosts) einen Cluster von
Anwendungsservern bilden. Durch den Zusammenschluss wird die Summe der
einzelnen Teile zu einer leistungsfähigen Lösung.
Hinweis
Microsofts NLBS-Dienst kann bis zu 32 Server in einem Cluster integrie-
ren, wodurch sich diese Lösung in Umfeldern anbietet, in denen viele
Hosts benötigt werden – etwa für Web- oder FTP-Server. Andere Cluste-
ring-Lösungen können derart viele Hosts nicht verwalten; der Microsoft
Cluster Server (MSCS) etwa, der für Anwendungen wie SQL Server entwi-
ckelt wurde, ist auf zwei Hosts pro Cluster beschränkt.
284 Clustering einer Netzwerkanwendung
Der NLBS-Dienst erlaubt den Lastenausgleich über die Verwendung von VNICs
und VIPs (virtuellen IP-Adressen). VNICs und VIPs werden im Laufe dieses
Kapitels noch umfassend beschrieben .
Das geschieht hoffentlich nie, aber bedenken Sie: Wenn einer oder mehrere Hosts
in einem Cluster ausfallen, bleibt die Anwendung dank der Architektur trotzdem
weiter verfügbar.
Sie kennen den Begriff »Einzelpunktversagen«? Darunter versteht man einen
Funktionsausfall (beispielsweise des Netzwerks, des Servers, der Anwendung
oder der Architektur), der dazu führt, dass Clientanforderungen nicht mehr bear-
beitet werden können. Wenn Sie nun nur einen Server zur Bereitstellung eines
Dienstes verwenden, dann ist dieser eine mögliche Quelle für ein Einzelpunktver-
sagen. Durch das Clustering wird die Wahrscheinlichkeit eines Einzelpunktversa-
gens drastisch reduziert, denn ausgefallene oder vom Netz genommene Computer
werden sofort erkannt, wodurch eine automatische Fehlertoleranz gewährleistet
ist. Sie können Server in Ihrem Cluster zu Wartungszwecken und zur Durchfüh-
rung von Präventivmaßnahmen vom Netz nehmen, ohne dass der Clusterbetrieb
gestört wird. Aus diesem Grund geht das Leben auch dann weiter, wenn Sie drei
Ihrer vier Server abschalten müssen.
Nach seiner Konfiguration ist ein Cluster betriebsbereit und benötigt nur noch
wenige bis gar keine Bedieneingriffe mehr. Damit wird für Netzwerkadministra-
toren ein Traum wahr: Der Cluster kann Hosts dynamisch entfernen und hinzufü-
gen, ohne dass er – der Administrator – komplexe Aufgaben ausführen muss.
Wenn Sie Clients zu einem Cluster zusammenfassen, benötigen Sie für diese nur
einen Hostnamen bzw. eine IP-Adresse, um auf die Anwendung zugreifen zu kön-
nen, während gleichzeitig die individuellen Computernamen beibehalten werden.
NLBS-Clients verwenden eine IP-Adresse, um auf den gesamten Cluster zuzu-
greifen. Wenn beispielsweise der Domänenname www.xyz.com als IP-
Adresse 10.1.1.2 aufgelöst wird und ein Client nun eine Anfrage bei www.xyz.com
stellt, dann kann jeder der im Cluster vorhandenen Server diese Anfrage bearbei-
ten. Abbildung 12.1 veranschaulicht diesen Cluster.
www.xyz.com wird als virtuelle IP-Adresse 10.1.1.2 aufgelöst, während jeder Host
im Cluster seine eigene reale IP-Adresse (wie etwa 10.1.1.3, 10.1.1.4 usw.) hat.
Vielleicht fragen Sie sich, ob jede in Frage kommende Anwendung auch kompati-
bel zum Clustering ist. Diesbezüglich kann ich Sie beruhigen, denn wenn Sie bei
der Konfiguration des Clusters alles richtig machen, dann brauchen Sie in der Ser-
veranwendung selbst keine Änderungen vorzunehmen. Wenn Sie also beispiels-
weise eine FTP-Site auf einem Server hosten, den Sie dann in einen Cluster inte-
grieren, dann müssen Sie in der Anwendung keine Einstellungen ändern – der
Cluster funktioniert wie erwartet und verteilt die Aufgaben entsprechend.
286 Clustering einer Netzwerkanwendung
Clients
fordern Domäne
»www.xyz.com« an.
10.1.1.2
Cluster »www.xyz.com«
Abb. 12.1: Vier Hosts in einem Cluster, die die Website www.xyz.com bereitstellen
2. Klicken Sie mit der rechten Maustaste auf die Schnittstelle, die als VNIC agie-
ren soll, und wählen Sie EIGENSCHAFTEN.
3. Markieren Sie das Kontrollkästchen NETZWERKLASTENAUSGLEICH.
Der Netzwerklastenausgleich ist nun auf Ihrem Server instanziert.
Kapitel 12 • Replikation und Clusterunterstützung 287
Anschlussregeln konfigurieren
Standardmäßig wird der gesamte Datenverkehr des Clusters vom Host mit der
höchsten Priorität (d.h. mit der niedrigsten Prioritätsnummer) verwaltet. Fällt die-
ser Host nun aus oder wird er vom Netz genommen, dann übernimmt der Host mit
der nächsthöheren Priorität diese Aufgabe. Dieses Regelverhalten gewährleistet,
dass der NLBS-Dienst den Netzwerkverkehr des Clusters nicht auf Anschlüsse
legt, die nicht mit Lastenausgleichsmechanismen arbeiten. Auch wird hierdurch
eine hohe Verfügbarkeit bei der Bearbeitung des Clusterdatenverkehrs sicherge-
stellt.
Um die Steuerung verschiedener Arten des TCP/IP-Verkehrs zu optimieren, kön-
nen Sie konfigurieren, wie der Clusterdatenverkehr im Netzwerk an den einzelnen
Anschlüssen gehandhabt wird. Dabei können Sie für den Netzwerklastenaus-
gleich zwischen drei verschiedenen Filtermodi auswählen: EINZELHOST, MEH-
RERE HOSTS und DEAKTIVIEREN.
288 Clustering einer Netzwerkanwendung
Geben Sie auf dieser Registerkarte die Anschlussregeln und den Filtermodus ein,
in dem der Host betrieben wird.
Clients
fordern Domäne
»www.xyz.com« an.
10.1.1.2
100% 0% 0% 0%
Cluster »www.xyz.com«
Abb. 12.2: Beispiel für einen Cluster im Modus EINZELHOST mit mehreren Hosts und
deren Hostprioritäten
Die Konfiguration des in Abbildung 12.4 gezeigten Clusters führt dazu, dass die
Hosts je nach Leistungsfähigkeit eine unterschiedliche Anzahl von Abfragen
bearbeiten.
Die letzte Konfigurationsoption in diesem Modus ist die AFFINITÄT, d.h. die
Zugehörigkeit eines Clients zu einem bestimmten Host im Cluster. Auch hier gibt
es wieder drei Möglichkeiten:
• Einfach. Ein Client behält die Verbindung zum ursprünglich kontaktierten
Host bei.
• Keine. Ein Client erhält keine Zuordnung eines bestimmten Servers, d.h. er
wird an den nächsten verfügbaren Host im Cluster verwiesen.
290 Clustering einer Netzwerkanwendung
Clients
fordern Domäne
»www.xyz.com« an.
10.1.1.2
Cluster »www.xyz.com«
Abb. 12.3: Mehrere Hosts mit gleicher Last, d.h. alle Server bedienen die gleiche
Anzahl an Abfragen
• Klasse C. In diesem Modus werden alle Anforderungen, die aus einem be-
stimmten Klasse-C-IP-Bereich stammen, von ein und demselben Host im
Cluster bearbeitet.
Durch Steuerung der Affinität können Sie Clientsitzungen für Anwendungen ver-
wenden, die solche Sitzungen unterstützen (siehe Abb. 12.4).
Clients
fordern Domäne
»www.xyz.com« an.
10.1.1.2
Cluster »www.xyz.com«
Abb. 12.4: Mehrere Hosts mit prozessorabhängig unterschiedlicher Last, d.h. alle
Server bedienen eine unterschiedliche Anzahl an Abfragen
Problem Lösung
Virtuelle/dedizierte IP- Vergewissern Sie sich, dass Sie die IP-Adresse sowohl
Adresse reagiert nicht auf unter den TCP/IP-EIGENSCHAFTEN als auch im Konfi-
ping-Befehl. gurationsfenster für den Netzwerklastenausgleich ein-
gegeben haben.
Ein anderer Host im Cluster Dieses Problem kann entstehen, wenn die clusterin-
reagiert nicht auf ping-Befehl. terne Kommunikation nicht funktioniert. Stellen Sie
sicher, dass der Cluster nicht für den Unicastmodus
konfiguriert ist.
Ein Host kann dem Cluster Überprüfen Sie die VIP – Sie muss der IP-Adresse des
nicht hinzugefügt werden. Clusters entsprechen.
Ein Host reagiert nicht auf Stellen Sie sicher, dass Sie keine Anschlussregel kon-
Anforderung. figuriert haben, die den Anschluss sperrt, an den die
Anforderung gerichtet ist (d.h. Anschluss 80 für
HTTP-Daten).
Der gesamte Datenverkehr Stellen Sie sicher, dass alle Hosts mit dem Filtermodus
wird nur an einen Host MEHRERE HOSTS konfiguriert sind, sofern dies
geleitet. gewünscht ist.
Tab. 12.1: Problembehebung beim Netzwerklastenausgleich
12.1.5 Fazit
Clustering und Lastenausgleich sind sehr umfangreiche Themen. In diesem
Abschnitt haben wir nur ein paar der von Microsoft angebotenen Technologien
beschrieben. Der wichtigste Punkt, den Sie aus dieser Lektion behalten sollten,
ist, dass ein einzelner Server nur ein einzelner Server ist, und es spielt absolut
keine Rolle, welchen Prozessor Sie einsetzen, mit wie viel Arbeitsspeicher Sie
ihn ausstatten oder welchen Fehlertoleranzgrad er aufweist: Er wird früher oder
später ausfallen. Das Vorhandensein eines solchen potentiellen Einzelpunktversa-
gens ist niemals positiv zu bewerten. Die Verwendung mehrerer Hosts in einem
Cluster ermöglicht Ausfallzeiten aufgrund von Hardware- oder Softwareversagen
oder zu Wartungszwecken – so können Sie nachts gut schlafen. Der Lastenaus-
gleich ist nicht nur eine Möglichkeit, die Überlastung eines Servers zu verhin-
dern, sondern erweist sich auch als sehr leistungssteigernd. Durch die Verteilung
der Arbeit auf mehrere Hosts wird die Systemleistung gesteigert, da viele Server
zur gleichen Zeit am gleichen Ziel arbeiten.
12.2 Replikation
Unter dem Begriff »Replikation« versteht man das Kopieren von Daten eines Ser-
vers auf einen oder mehrere andere Server zwecks Erzielung eines konsistenten
(synchronen) Datenbestandes. Alle für Clients bereitgestellten Daten – egal, ob
auf FTP-, Web-, Mail- oder Dateiservern – müssen in einem Cluster identisch
Kapitel 12 • Replikation und Clusterunterstützung 293
sein. Wenn sich die Daten unterscheiden, dann führt der Aufruf von Webseiten
auf Ihrer Site bei den Besuchern zu immer unterschiedlichen Ergebnissen; ferner
könnten die verschiedenen Daten auch zu Fehlern führen, da ein Dienst oder ein
Vorgang immer die aktuellsten Inhalte benötigt, die für den Dienst bereitstehen.
Damit eine Gruppe von Webservern, die alle zur Bereitstellung identischer Daten
für alle Clients verwendet werden, korrekt zusammenarbeiten, müssen Sie bei
Ihren Planungen die Datenreplikation berücksichtigen. Dies erreichen Sie durch
die Verwendung von Utilities wie der Content Replication-Komponente aus dem
Microsoft Site Server 3.0, den Programmen IISSync.exe und Robocopy.exe oder
dem Verteilten Dateisystem (DFS). Jedes dieser Programme hat seine Stärken und
Schwächen – welches Sie wann verwenden, hängt von Ihren Bedürfnissen und
den speziellen Umständen in Ihrem Netzwerk ab.
Eines der aufregendsten neuen Merkmale von Windows 2000 Server ist das Ver-
teilte Dateisystem (Distributed File System, DFS). Seine Fähigkeiten zur dynami-
schen Replikation und zur Fehlerüberprüfung machen es für Windows 2000-
Administratoren zu einer interessanten Option. In diesem Teil des Kapitels wer-
den wir uns etwas näher mit DFS beschäftigen, da es ohnehin Bestandteil von
Windows 2000 Server ist.
12.2.1 Replikationsprogramme
Jedes Netzwerk ist anders – dank unterschiedlicher Anforderungen, Topologien,
geografischer Standorte und Betriebssysteme. Das bedeutet, dass es kein All-
zweckwerkzeug für jede Netzwerkumgebung gibt, sondern es werden verschie-
dene Programme benötigt, die die jeweiligen Bedürfnisse eines Administrators
erfüllen können. Während die einen Administratoren die Eingabeaufforderung als
optimale Bedienoberfläche betrachten, wollen andere eine wesentlich einfachere
Lösung, Dritte wiederum organisieren ihre Replikation über Skripts. Microsoft
bietet für Replikationsaufgaben in einem Cluster verschiedene Lösungen an, dar-
unter u.a. IISSync, die Content Replication-Komponente aus dem Site Server,
Robocopy und DFS. Werfen wir zunächst einen Blick auf die Merkmale und Vor-
züge der einzelnen Lösungen.
IISSync
IISSync.exe ist das IIS-Synchronisierungsprogramm, das standardmäßig bei der
Installation von IIS installiert wird. Es befindet sich im Verzeichnis %system-
root%\WINNT\system32\inetsrv und ermöglicht zusammen mit IIS die Realisie-
rung einer skriptsteuerbaren und skalierbaren Umgebung für eine skalierbare und
fehlertolerante Gruppe von Webservern. Zwar wurde die Inhaltsreplikation bei
der Entwicklung von IISSync.exe eigentlich nicht beabsichtigt, aber seine Struktur
berücksichtigt die Replikation der Metabasis. Die Replikation der Metabasis ist
bei einem Servercluster ein wesentliches Merkmal, denn hier ändert sich die
Metabasis häufig, und diese Änderungen müssen möglichst umgehend auf alle
Server repliziert werden.
294 Replikation
Die Umsetzung von IISSync.exe ist recht simpel gestrickt. Geben Sie an der
Befehlszeile des Quellservers (oder des Servers, von dem aus Sie die Metabasis
replizieren wollen) den Befehl iissync \\zielserver ein, wobei zielserver der
NetBIOS-Name des Servers ist, auf den Sie die Metabasis replizieren wollen.
Robocopy
Robocopy.exe ist ein Programm, dass mit dem Windows 2000 Resource Kit aus-
geliefert wird. Sie können dieses Befehlszeilen-Utility über den Taskplaner von
Windows 2000 steuern. Robocopy.exe kann alle Verzeichnisse und Dateien rekur-
siv zu festgelegten Zeitpunkten replizieren.
Verteiltes Dateisystem
Mit dem Verteilten Dateisystem (DFS) können Sie bei Ihrer Clusterimplementie-
rung sicherstellen, dass alle Hosts im Cluster identische Daten bereitstellen. DFS
wird mit Windows 2000 Server automatisch installiert. Es gewährleistet, dass alle
Daten in einem DFS-Basisverzeichnis, einem Verzeichnis oder einer Freigabe
repliziert und so synchron gehalten werden. Mit DFS kann ein Administrator ein
Dokument oder eine Datei modifizieren und sie dann auf alle Mitglieder der DFS-
Replikationsgruppe replizieren lassen.
2. Klicken Sie mit der rechten Maustaste auf das Symbol VERTEILTES DATEISYS-
TEM im linken Fensterbereich und wählen Sie den Eintrag NEUEN DFS-STAMM
im Kontextmenü. Der ASSISTENT ZUM ERSTELLEN EINES NEUEN DFS-STAMMS
wird gestartet. Klicken Sie auf WEITER.
3. Vergewissern Sie sich, dass die Option DOMÄNEN-DFS-STAMM ERSTELLEN
selektiert ist, und klicken Sie dann auf WEITER.
4. Wählen Sie die Hostdomäne für den DFS-Stamm und klicken Sie dann auf
WEITER.
5. Bestätigen Sie den Namen des Hostservers für den DFS-Stamm. Klicken Sie
auf WEITER.
6. Wählen Sie den lokalen Freigabepunkt aus, der als Ziel des DFS-Stamms ver-
wendet wird, an dem der Replikationsinhalt abgelegt werden soll. Wenn Sie
zum ersten Mal eine DFS-Freigabe erstellen, müssen Sie einen Freigabepunkt
erstellen. Klicken Sie auf NEUE FREIGABE ERSTELLEN und geben Sie einen
Pfad wie etwa d:\inhalte sowie den Freigabenamen ein, der leicht zu merken
sein sollte. Mit dem Snap-In können Sie sowohl einen neuen Freigabepunkt als
auch ein neues Verzeichnis erstellen, sofern dieses noch nicht vorhanden ist.
7. Klicken Sie auf WEITER. Wenn das angegebene Verzeichnis nicht existiert,
werden Sie gefragt, ob es erstellt werden soll. Klicken Sie auf JA, um den Vor-
gang fortzusetzen. Falls gewünscht, können Sie eine Bemerkung zur Beschrei-
bung der Freigabe eingeben. Klicken Sie auf WEITER.
8. Klicken Sie auf FERTIG STELLEN, um den DFS-Stamm zu erstellen. Wenn der
Assistent seine Arbeit abgeschlossen hat, können Sie den DFS-Stamm admi-
nistrieren.
Nun können Sie die Replikation im Cluster starten. Die Verwendung dieses Pro-
gramms wird den Umfang Ihrer Aufgaben verringern, denn es stellt sicher, dass
alle Inhalte an alle Hosts im Cluster verteilt werden.
Tipp
Wenn Sie ein Replikationsschema implementieren, gehen Sie dabei mit
Umsicht vor. Arbeiten Sie zunächst in einem Testfeld oder einem Testver-
zeichnis, in dem Testinhalte vorhanden sind. Ich rate dringend davon ab,
Replikationsübungen mit Produktionsinhalten auf Produktionsservern
296 Replikation
12.2.4 Fazit
Wenn Sie identische Server als Hosts in einem Cluster benutzen, ist die Synchro-
nizität der bereitgestellten Inhalte einer der wesentlichsten Faktoren. Um die
gigantische administrative Arbeit zu verringern, die sich aus der Sicherstellung
der Inhaltsverteilung auf den betroffenen Servern ergibt, können verschiedene
Automatisierungslösungen verwendet werden. Welches Produkt dabei das ange-
messenste ist, hängt von der Art und Weise der Clusterimplementierung ab. Die
Konfiguration der Replikation in einer Testumgebung ist zwingend, damit nicht
versehentlich falsche Inhalte in ein Produktionsverzeichnis repliziert werden.
Windows 2000 Server verfügt über eine in hohem Maße skalierbares und konfi-
gurierbares Programm namens DFS, welches es Ihnen ermöglicht, die Inhaltsrep-
likation auf mehrere Server in einer Domäne durchzuführen.
Kapitel 13
Administrationsskripts
Wenn Sie in einer UNIX- oder Linux-Umgebung großgeworden sind oder auf
Befehlszeilen-Utilities schwören, dann werden Sie die Skriptingmöglichkeiten
von IIS 5.0 sehr zu schätzen wissen. Sie können eine ganze Reihe der administra-
tiven Aufgaben mit Hilfe von Skripts automatisieren und ferner mit den Skripts
Websites und in diesen wiederum Verzeichnisse und Anwendungen erstellen.
Abb. 13.1: In diesem Dialogfeld werden Sie gefragt, ob Sie CScript als Standardhost
für Ihre VBScript-Anwendungen registrieren wollen. ADSUTIL ist eine
solche VBScript-Anwendung.
Wenn Sie die Schaltfläche JA anklicken, dann registriert Windows 2000 adsutil
und verknüpft es als .vbs-Datei mit CScript. Nachfolgend erscheint ein Mel-
dungsfenster, dass die Registrierung erfolgreich war. Sie können adsutil nun in
der Befehlszeile oder in Stapelverarbeitungsdateien verwenden.
Die zweite Methode zur Registrierung von adsutil ist der Aufruf der Anwendung
CScript.exe in der Befehlszeile. Geben Sie den Befehl cscript //H:cscript in
einer Zeile ein, um die Registrierung von CScript als Scripthost-Standard zu star-
ten. Das Ergebnis sehen Sie in Abbildung 13.2.
Kapitel 13 • Administrationsskripts 299
• 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 funktio-
nieren 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.
• FIND pfad. Sucht den Pfad, von dem aus eine Anwendung gestartet wird.
• START_SERVER pfad. Startet den Server, falls dies noch nicht geschehen ist.
Beispiel
Ich habe den folgenden Befehl an meinen Server eingeben:
adsutil STOP_SERVER W3SVC/1
Hinweis
Diese Befehle halten natürlich nicht den Windows 2000-Server an, son-
dern nur den IIS-Bereich des Servers.
Kapitel 13 • Administrationsskripts 301
-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
--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 hin-
zugefü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 Erstel-
lung 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.
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 local-
host 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\www-
root\Marketing\Grafiken
-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, gleich-
zeitig 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
Dieser Befehl würde den Webdienst auf dem Computer localhost beenden.
306 Arbeiten mit den IIS-Administrationsskripts
Dieser Befehl beendet den ersten FTP-Server, der auf Ihrem Computer vorhanden
ist.
-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
-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
In diesem Beispiel wird der erste FTP-Dienst auf dem Computer computer gestar-
tet.
Dieser Befehl hält den ersten Webserver auf dem Computer namens computer an.
In meinem Fall ist dies der Standardwebserver.
Dieser Befehl hält den ersten Webserver auf dem Computer namens computer an.
Kapitel 13 • Administrationsskripts 309
Dieser Befehl hält den ersten FTP-Server auf dem Computer namens computer
an.
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
-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.
-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
Syntax
chaccess -a ADSPfad, -c computer,
+/- read
+/- write
+/- script
+/- browse
312 Fazit
+/- execute
-v, -? Hilfe
13.2 Fazit
Administrationsskripts sind eine bedeutsame Möglichkeit, die Remoteadministra-
tion oder eine Administrationsautomatisierung zu verwirklichen, bei der verschie-
dene 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 automa-
tisieren, 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 wer-
den, 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ög-
lich. Beispielsweise könnte ein Skript die Web- oder FTP-Dienste Ihres Unter-
nehmens 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
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.
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 Ände-
rung 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 Objek-
ten vorgenommen werden, haben in diesem Fall Vorrang vor den globalen Ein-
stellungen.
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 Benut-
zertypen der einzelnen Objekte auflistet. Sie können das SDK (Software Develop-
ment Kit) für die Windows 2000-Plattform unter http://msdn.microsoft.com/
downloads/sdks/platform/platform.asp herunterladen. Unten auf dieser ASP-
Seite 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 Automationsak-
tivierung betrachtet, d.h. sie gestatten über ihre Schnittstellen Datenmanipulatio-
nen 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.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 IIS-
Konfigurationsschlüssel in der Registrierung wahrscheinlich kennen. Diese Werte
sind von nun an in der Metabasis gespeichert, wodurch es erfreulicherweise mög-
lich ist, die gleiche Eigenschaft für verschiedene Knoten unterschiedlich zuzu-
weisen. 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
IISFTPInfo IISWebInfo
IISFTPServer IISFilters
IISFTPVDir IISFilter
IISLogModules IISCompressionSchemes
IISLogModule IISWebServer
IISCustomLogModule IISWebVDir
IISMimeMap 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 FTP-
und 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 fin-
den 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 wer-
den. Wie bereits oben gesagt wurde, können Sie auch an einzelnen Web- oder
FTP-Servern Änderungen vornehmen, die dann Vorrang vor den globalen Einstel-
lungen haben, welche auf der Computer- oder Dienstebene vorgenommen wur-
den.
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 hin-
gegen eine vererbbare Eigenschaft mit Hilfe eines Skripts einstellen,
haben Sie keine Eingriffsmöglichkeit – die Unterknoten erben die Einstel-
lung automatisch.
In Anhang D finden Sie eine Liste aller Eigenschaften. Dort ist auch ersichtlich,
welche Eigenschaften vererbbar sind.
14.3.1 Übersicht
Mit Hilfe der IIS Admin Objects können Sie eine ASP-Seite oder eine benutzer-
definierte 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 ein-
fach 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 Remotekonfigu-
ration ausführen zu können.
Der jeweilige Metabasis-Pfad referenziert die IIS Admin Objects. Wenn Sie bei-
spielsweise auf den zweiten Webserver auf einem Computer namens websrvone
zugreifen wollen, dann müssen Sie den vollständigen ADSI-Pfad (AdsPath) ein-
geben, 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 folgen-
den 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 bestimm-
ten Knoten in der Metabasis
322 IIS Admin Objects
• eine Möglichkeit, den Pfad eines dem Objekt übergeordneten Objekts auszule-
sen
• Bindungsdaten für eindeutig identifizierende Objektinstanzen in einem Ver-
zeichnisbaum
ADSI-Containerobjekte
ADSI-Containerobjekte sind diejenigen IIS Admin Objects, die durch Implemen-
tierung 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 IIsWeb-
Directory-, ein IIsWebVirtualDir- und ein IIsWebFile-Objekt enthalten kann.
Die Schnittstelle IADsContainer ermöglicht die Ausführung der folgenden Proze-
duren 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
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 Anwendungsdefini-
tion 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.
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 las-
sen, mit dem ich auf die Eigenschaften von W3SVC zugreifen kann. Hierbei han-
delt 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 Auf-
nahme des von GetObject zurückgegebenen Objekts dient. Auf diese Weise kön-
nen wir den Namen der Variablen beim Zugriff auf die Objekteigenschaften als
Verweis auf das Objekt selbst verwenden, statt jedes Mal, wenn wir eine Eigen-
schaft 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 Administratoren-
konto 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 Benut-
zerliste hinzugefügt und dieser dann Vollzugriff auf das Verzeichnis gewährt. Hier
liegt natürlich ein gewisses Sicherheitsrisiko vor, denn wenn der Server als Pro-
duktionsserver mit dem Internet verbunden ist, gestatten Sie es auf diese Weise
allen Benutzern – internen wie externen –, auf das Verzeichnis \InetPub zuzugrei-
fen 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 authentifi-
zieren kann. Auf diese Weise schützen Sie Ihren Produktionsserver vor unbefug-
tem 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 IIS-
Administration mit Hilfe von ASP-Skriptdateien gegeben. Ich habe Ihnen die
Verwendung der HTML-Version des Internetdienste-Managers als Tool zur IIS-
Remoteadministration gezeigt. Ferner wurde auf die Struktur der Metabasis einge-
gangen, 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 unbedien-
bar machen.
Kapitel 15
Remoteadministration
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 Fir-
men 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 Vorgehens-
weisen 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 Vorgehens-
weise, und Sie müssen selbst entscheiden, welche Sie bevorzugen – natürlich nur,
sofern Sie angesichts der Strukturen in Ihrer Organisation überhaupt eine Wahl
haben.
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äh-
len.
Hinweis
Reden Sie im Zweifelsfall vor der Auswahl eines Anschlusses mit dem
Netzwerkadministrator bzw. der Person, die für die Firewall Ihrer Organi-
sation 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 zugrei-
fen können. Wählen Sie also die Registerkarte OPERATOREN (Abbildung 15.3)
des Dialogfelds EIGENSCHAFTEN VON VERWALTUNGSWEBSITE.
330 Remoteadministration über das Internet
Wie Sie sehen, hat unter Windows 2000 nur die Gruppe Administratoren stan-
dardmäßigen Zugriff auf die Verwaltungswebsite. Sie können nach Belieben
andere Konten oder Gruppen hinzufügen; klicken Sie auf die Schaltfläche HINZU-
FÜGEN, um das Dialogfeld BENUTZER ODER GRUPPEN AUSWÄHLEN (Abbildung
15.4) aufzurufen. Hier können Sie die gewünschten Gruppen- oder Benutzerkon-
ten 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 set-
zen. 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än-
kung des Zugriffs auf die Verwaltungswebsite dem auf dem von Ihnen spezifizier-
ten Computer. Zu diesem Zweck müssen Sie die Registerkarte VERZEICHNIS-
SICHERHEIT (Abbildung 15.5) im Dialogfeld EIGENSCHAFTEN selektieren.
Kapitel 15 • Remoteadministration 331
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 beispiels-
weise 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 entspre-
chende 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 Benut-
zernamen und Kennwort kennen würde. Nicht sehr wahrscheinlich, aber immer-
hin noch möglich.
Die letzte Option – die Beschränkung auf den Domänennamen – funktioniert ähn-
lich wie die vorhergehende Einstellung, nur mit dem Unterschied, dass ein
»Fremdcomputer«, der unberechtigterweise Administrationsaufgaben durchfüh-
ren will, aus der gleichen Domäne stammen muss (und damit gar nicht so fremd
sein kann).
Kapitel 15 • Remoteadministration 333
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, kli-
cken Sie auf die Schaltfläche OK, um die Änderungen zu übernehmen und das Dia-
logfeld 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.7: Der Internet Explorer zeigt die Weboberfläche des Internetdienste-
Managers, über die Sie Ihre Website administrieren können
Tipp
Wenn Sie bei der Bewegung des Mauszeigers über einen dieser Hyper-
links 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 Ser-
ver 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 jeweili-
gen Registerkarten im Dialogfeld EIGENSCHAFTEN der Web- oder FTP-Site ent-
sprechen. Wenn Sie hier allerdings Änderungen vornehmen, müssen Sie keine
ÜBERNEHMEN- oder OK-Schaltflächen anklicken, sondern die Schaltfläche SPEI-
CHERN unten auf der Seite betätigen, um die Änderungen an einer Site zu über-
nehmen. Bei Anklicken der Grafik Zurück im linken Frame wird wieder die Start-
seite (Abbildung 15.7) aufgerufen.
Der Vorteil der Siteadministration über HTTP besteht darin, dass Sie Ihren Web-
server von jedem beliebigen Betriebssystem aus verwalten können – der verwen-
dete 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 Net-
scape 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 BERECHTI-
GUNGS-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.
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.
Hinweis
Je nach Geschwindigkeit Ihres Netzwerks werden Sie eventuell eine
ganz kleine Verzögerung bei der Anzeige der Dialogfelder oder Eigen-
schaften 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 Inter-
netdienste-Manager eine Verbindung zu einem Remoteserver herstellt. Nun, das
ist ein einfacher Vorgang.
Öffnen Sie, falls nicht bereits geschehen, den Internetdienste-Manager und wäh-
len 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 IIS-
Dienst 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 Netz-
werk 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-Installa-
tion 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
Hinweis
Der einzige Sicherheitsvorgang, der sich nicht von einem Remotecompu-
ter aus durchführen lässt, ist der Vorgang SERVERZERTIFIKAT. Die Anforde-
rung 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 ausge-
fü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 Internet-
dienste-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 Remo-
tecomputer aus mit dem bevorzugten Browser über die HTML-Oberfläche ver-
walten.
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 Active Server Pages
Kapitel 17 Installierbare ASP-Komponenten
Kapitel 16
Active Server Pages
ASP (Active Server Pages) wurde als Umgebung für serverseitige Skripts entwi-
ckelt. Sie können zur Erstellung von ASP-Seiten VBScript oder JScript verwen-
den 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 Web-
browser, 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 Informa-
tionen 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 Ent-
wicklungsabteilung erstellt wurden, können Sie ASP zu Ihrem Vorteil nutzen.
Einer der überzeugendsten Gründe für den Einsatz von ASP bei der Siteadminist-
ration ist die Möglichkeit, Webseiten mit Hilfe von Cookies oder Skripts speziell
auf Benutzer auszurichten, indem der Sitzungsstatus berücksichtigt wird. Neben-
bei: 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 fest-
stellen, 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, Anforderun-
gen an ASP-Dateien zu senden, ohne dabei Umleitungen zu verwenden, die fröh-
lich 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 Administrato-
ren 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 verwen-
det 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 ver-
schließ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üh-
rung zusätzlicher Anforderungen und zur Fortsetzung der Bearbeitung bereitstel-
len. 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 Ver-
sionen entwickelt haben, dann werden die nächsten Absätze für diese von beson-
derem 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 ASP-
Skripts nicht vor Ende der Verarbeitung an den Client gesendet wurden. Sie kön-
nen 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 Informati-
onen 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 sol-
cher 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 verwie-
sen, 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.
Wenn Sie Ihre Einstellung vorgenommen haben, klicken Sie auf die diversen OK-
Schaltflächen, um die Dialogfelder zu schließen und die Änderungen zu überneh-
men. 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 inte-
grieren. Das Listing 16.1 zeigt eine sehr einfach gehaltene ASP-Seite, die die Sys-
temzeit des Servers verwendet, um eine tageszeitbezogene Meldung anzuzeigen.
<%@ LANGUAGE = "VBScript" %>
<HTML>
<HEAD><TITLE>Serverzeit</TITLE></HEAD>
<BODY>
<CENTER><H1><FONT Color="Blue">GK Computer Consulting</FONT></H1></CENTER><HR>
<CENTER><H2>Hinweise zu Transaktionen</H2></CENTER><HR>
<%
Dim timeframe
Willkommen auf unserer Website! Hier ist es zur Zeit <% =timeframe %>.<P>
Alle von Ihnen heute auf unserer Zeit durchgeführten Transaktionen erhalten<BR>
unseren lokalen Zeitstempel. Dieser lautet im Moment <B><% =Now() %></B>
</BODY>
</HTML>
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 Plat-
zierung 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 VBScript-
Codes 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 funktio-
niert 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 insbe-
sondere 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
%>
</BODY>
</HTML>
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 bei-
spielsweise 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 zwi-
schen diesen Tags wird nicht angezeigt, wenn der Code auf dem Server ausge-
führt wird. Setzen Sie den Code statt dessen zwischen die Tags <SCRIPT> und
</SCRIPT>, so wird er auf dem Client ausgeführt und dem Benutzer auch ange-
zeigt, 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 betrach-
ten. Lädt der Benutzer jedoch die gesamte Datei herunter, dann kann er
den Code natürlich sehen.
16.2 Skriptsprachen
Mit IIS 5.0 können Sie eine beliebige Skriptsprache verwenden, sofern das ent-
sprechende Skriptmodul auf dem Server installiert ist. Alles in allem unterschei-
den 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 wer-
den.
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 ken-
nen 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 Programmierspra-
che Java angelehnt.
Alle Codebeispiele in diesem Buch sind in VBScript geschrieben – aus drei Grün-
den: 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 Standard-
sprache auf dem Server festlegen. Sie können auch für eine ASP-Seite eine vor-
eingestellte Sprache festlegen, indem Sie eine entsprechende Anweisung am Sei-
tenanfang 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.
' 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.
<%
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« Spra-
chen 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 wer-
den können. Bei den beiden hier beschriebenen Skriptsprachen sind alle Variablen
vom Typ Variant. Diesen Datentyp werden wir im folgenden Abschnitt bespre-
chen.
deklariert. In Ihrem Schleifencode könnten Sie die Variable dann etwa so einset-
zen:
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 Speicherbe-
reich 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 zuge-
wiesen wird; diese Zuweisung kann durch den Code nicht mehr geändert werden.
Wenn Sie einen Datenspeicher als Konstante definieren, müssen Sie ihn gleich-
zeitig 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 Program-
miererpraxis 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 Skript-
code.
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 Pro-
zedur 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 vorhan-
denes 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 Anwei-
sung konfiguriert das Array arDice mit zehn Elementen neu.
In der Liste der Anweisungen erwähnte ich die Möglichkeit, Variablen zu publi-
zieren bzw. zu privatisieren. Diese Begriffe beziehen sich auf den Wirkungsbe-
reich einer Variable, d.h. auf den Bereich, von dem aus auf die Variable zugegrif-
fen 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 dekla-
riert 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 Variab-
len (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 Anwen-
dung sicht- und verfügbar zu machen. Zu diesem Zweck werden globale Variab-
len verwendet, die mit dem Bereich Session (Sitzung) oder Application (Anwen-
dung) 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 Sit-
zung 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 zei-
gen, wie ASP grundlegend funktioniert, so dass Sie es in Ihrer IIS-Umgebung ein-
setzen können.
document.write(msg)
}
-->
</SCRIPT>
</BODY>
</HTML>
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-Funk-
tionen zum Client verschoben und die Serverbelastung so verringert wird. Eine
Menge kleiner Skripts wie dieses kann die Leistung Ihres Servers verbessern. Ver-
stehen Sie mich nicht falsch: Ich will damit nicht sagen, dass Sie den Clientcom-
putern 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ückge-
ben 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 unterschei-
den.
Entsprechend der typischen Wirkungsbereiche von Funktionen und Prozeduren,
wie sie in anderen Entwicklungstools verwendet werden, können Sie ihre Proze-
dur/Funktion auf der Seite schreiben, die diese auch verwendet. Alternativ kön-
nen Sie allgemeine Prozeduren/Funktionen schreiben, die sie als allgemeine Datei
speichern, und dann die Anweisung #include verwenden, um Datei und Funktio-
nen 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, ste-
hen normalerweise zwischen den Trennzeichen <% und %>; Funktionen und Proze-
duren werden hingegen in der Regel zwischen den Tags <SCRIPT> und </SCRIPT>
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 Micro-
soft 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 voll-
stä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 Funktions-
namens Klammern anhängen. Der folgende Codeausschnitt zeigt die korrekte
Syntax für den Aufruf einer JScript-Funktion namens RunMe:
<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
<% RunMe() %>
</BODY>
</HTML>
Bei VBScript können Sie die Klammern weglassen, sofern Sie an die aufzuru-
fende 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:
<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
<% Summe(10, 25) %>
</BODY>
</HTML>
Diese Prozedur übergibt die beiden ganzzahligen Werte 10 und 25 an eine Proze-
dur namens Summe. Dem Namen der Prozedur können Sie entnehmen, was diese
mit den beiden Parameterwerten machen soll.
Kapitel 16 • Active Server Pages 361
16.4 Auflistungen
Wenn Sie zwecks Speicherung zusammengehörender Daten bereits mit Arrays
gearbeitet haben, dann werden Sie das Konzept der »Auflistungen« wahrschein-
lich zu schätzen wissen. Auflistungen ähneln Arrays dahingehend, dass sie
zusammengehörige Elemente als Gruppen speichern. Sie können Zahlen, Zei-
chen, 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 verwen-
den. Natürlich lässt sich eine Auflistung auch mittels einer Schleife durcharbei-
ten.
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).
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
Dieser Code tut das gleiche wie die vorhergehende For…Each-Schleife – Sie kön-
nen die gewünschte Vorgehensweise also frei wählen.
Hinweis
Wenn Sie VB-Programmierer und bereits mit der Bearbeitung von Auflis-
tungen 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 unter-
stützt, nicht jedoch die Methode Add. Sie müssen Ihre Auflistungen also
bei der Planung bereits einschätzen können.
zu bewerten. Formulare sind seit einiger Zeit Standard bei der Ermittlung von
Benutzerdaten auf HTML-Seiten. Sie können ASP zur Bewertung von Benutzer-
daten 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 Benutzer-
daten 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üßungsmel-
dung auf dem Bildschirm anzeigt.
<HTML>
<HEAD><TITLE>Abfrage der Formulardaten</TITLE></HEAD>
<BODY>
<H2>Geben Sie bitte Ihren Vor- und Nachnamen in die entsprechenden Felder ein
und klicken Sie auf die Schaltfläche 'Senden'.</H2>
</BODY>
</HTML>
Listing 16.5: inputuser.htm
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 Variab-
len Vorname und Nachname ablegt, die im Formular durch INPUT NAME deklariert
werden. Die Daten werden nachfolgend als URL an die Datei userinfo.asp über-
geben – 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 Formu-
lar ist die Möglichkeit der Verwendung von Bewertungsfunktionen, um festzu-
stellen, 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 verifi-
zieren könnte. Sind die Daten gültig, dann hat der Benutzer Zugriff auf die ent-
sprechenden 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 wie-
der viele Seiten auf dem Server speichern, die dort eine Menge Platz brauchen
und deren Erstellung stundenlang dauert.
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 Ein-
stellung 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 ver-
wendet 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 "<B>Methode WRITE für das Objekt RESPONSE</B>" %>
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 ein-
gegebene 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 Eigenschaf-
ten 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 Vereinfa-
chung 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.
Listing 16.7 ähnelt stark Listing 16.1; ich habe lediglich ein paar Änderungen
vorgenommen, um die Verwendung der Methode Response.Write zu veranschau-
lichen. Der Code überprüft nach wie vor, wie spät es auf dem Server ist, und sen-
det 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 Trennzei-
chen 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 sen-
den, damit dieser weiß, dass der Acrobat Reader (sofern auf Ihrem System instal-
liert) 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.
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üp-
fungen 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 Vorhan-
densein 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.
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:
<!-- #include virtual|file ="dateiname" -->
Achten Sie darauf, dass die Anweisung innerhalb der Kommentarzeichen <!--
und --> 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 ausge-
fü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.
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 konfigu-
riert ist, funktioniert diese Vorgehensweise natürlich nicht.
Damit Sie verstehen, wie das Objekt Session funktioniert, müssen Sie sich klar-
machen, wie eine Sitzung gestartet wird. Dies kann auf eine von vier unterschied-
lichen 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 <OBJECT>-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 beispiels-
weise 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 ent-
sprechend 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 been-
det; 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 abbre-
chen. Die im Zuge solcher Vorgänge erstellten Objekte verbleiben im Speicher,
bis der Timeout sie freigibt – bei zu hohen Timeoutwerten wird dabei der Spei-
cher des Servers unnötig belastet.
Wenn Sie das Objekt Session verwenden, erstellt der Server eine eindeutige Ken-
nung 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 Speiche-
rung 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 über-
mittelten 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 überlas-
sen. Die Onlinehilfe enthält eine Menge weitere Informationen über das Objekt
Session und seine Verwendung.
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 Datenzugriffs-
mö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 notwen-
digen Verbindungsdaten erstellen. Dazu gehört auch eine Verbindungszeichen-
kette, die das Skript benutzt, um die Datenquelle zu finden; die Zeichenkette
enthält den Datenquellentyp und alle gegebenenfalls benötigten Authentifizie-
rungsangaben.
Für die Beispiele in diesem Abschnitt werden wir eine Access-Datenbank ver-
wenden, 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 eingetra-
gen.
Abb. 16.5: Das Fenster VERWALTUNG enthält das Applet DATENQUELLEN (ODBC),
über das die Datenquellen konfiguriert werden können
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
<CENTER><H1><FONT Color="Blue">Datenbankzugriff</FONT></H1></CENTER><HR>
<%
Dim db
Dim rs
Dim strSQL
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Benutzer"
strSQL = "SELECT * FROM Benutzer"
Set rs = db.Execute(strSQL)
%>
<table BORDER="1" WIDTH="100%">
<tr>
<td bgcolor="#C0C0C0"><font face="times new roman, times">
<p align="center"><b><font color="#FF0000">Nachname</font></b>
</font></td>
<td bgcolor="#C0C0C0"><font face="times new roman, times">
<p align="center"><b><font color="#FF0000">Vorname</font>
</b</font></td>
<td bgcolor="#C0C0C0"><font face="times new roman, times">
<p align="center"><b><font color="#FF0000">Zugriffsebene</font>
</b</font></td>
</tr>
<%
Do While Not rs.EOF
%>
<tr>
<td align="center" ><font face="times new roman, times">
<% =rs("NName") %>
</font></td>
<td align="center"><font face="times new roman, times">
<% =rs("VName") %>
</font></td>
<td align="center" ><font face="times new roman, times">
<% =rs("zugriffsebene") %>
</font></td>
</tr>
<%
rs.MoveNext
Loop
db.Close
%>
</BODY>
</HTML>
Dieser Code stellt einen Kontakt zur weiter oben erstellten Datenbank user-
info.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-Anwei-
sung 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 Datensatz-
gruppe 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 dynami-
schem Wege eine Tabelle und füllen diese mit den Einträgen für Vor- und Nachna-
men 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 fin-
den 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 tat-
sä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 über-
mittelt 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 Transakti-
onsumgebung 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
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 Pro-
grammierer geschafft.
Die Bandbreite der Fehler reicht von so einfachen Dingen wie Rechtschreibfeh-
lern 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 Fehlermel-
dung 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 vor-
handen 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 Produktions-
server ü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
• 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 Feh-
lermeldungen anzeigen zu lassen.
All diese Methoden werden in der IIS-Hilfe in den Abschnitten über ASP umfas-
send 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 sol-
len. 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 #include-
Dateien 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 entsprechen-
den Seiten auf der MSDN-Website nahe; hier finden Sie eine Menge Informatio-
nen zu ASP und möglichen Einsatzgebieten.
Kapitel 17
Installierbare ASP-Komponenten
ASP beinhaltet eine Reihe installierbarer Komponenten, die Sie auf Ihren Websi-
tes verwenden können, um Interaktivität und dynamische Inhalte zu realisieren. In
diesem Kapitel sollen diese Komponenten beschrieben und jeweils ein Anwen-
dungsbeispiel aufgeführt werden.
17.1.1 Übersicht
Der Ad Rotator verwendet zur Feststellung der für die Banner benötigten Pla-
nungs- 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 aufge-
rufen.
<%@ LANGUAGE="VBScript" %>
<HTML>
<HEAD><TITLE>Bannerrotation</TITLE></HEAD>
<BODY>
<CENTER><% Set ad = Server.CreateObject("MSWC.AdRotator") %>
<HR>
<H1> Willkommen auf unserer Werbeseite!</H1></Center>
</BODY>
</HTML>
Damit diese Seite ordnungsgemäß arbeitet, benötigen Sie eine korrekt konfigu-
rierte 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
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äu-
fig die jeweilige Anzeige im Verhältnis zu den anderen Anzeigen aufgerufen wer-
den soll.
Die letzte erwähnte Datei war die Umleitungsdatei. Diese Datei enthält den ASP-
Skriptcode, 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" %>
<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
<% Response.Redirect(Request.QueryString("url")) %>
</BODY>
</HTML>
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 Rota-
tor 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
TargetFrame
Wenn auf Ihren Seiten Frames verwendet werden, können Sie mit dieser Eigen-
schaft 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
%>
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 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 zutref-
fen.
Die Datei Browscap.ini befindet sich normalerweise im Verzeichnis %systemver-
zeichnis%\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
parent=IE 5.0
platform=WinNT
beta=True
[*]
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=
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.Create-
Object erstellt wird.
Beispiel
(in dieser Form nicht vollständig lauffähig)
<%@ LANGUAGE="VBScript" %>
<HTML>
<HEAD><TITLE>Browser Capabilities</TITLE></HEAD>
<BODY>
<% Set bc = Server.CreateObject("MSWC.BrowserType") %>
<TABLE BORDER=1>
<TR><TD>Browser</TD><TD> <%= bc.browser %>
<TR><TD>Version</TD><TD> <%= bc.version %> </TD></TR>
<TR><TD>Frames</TD><TD>
<% if (bc.frames = TRUE) then %> TRUE
<% else %> NEIN
<% end if %> </td></TR>
<TR><TD>Tabellen</TD><TD>
<% if (bc.tables = TRUE) then %> JA
<% else %> NEIN
<% end if %> </TD></TR>
<TR><TD>Hintergrundsounds</TD><TD>
<% if (bc.BackgroundSounds = TRUE) then %> JA
<% else %> NEIN
<% end if %> </TD></TR>
<TR><TD>VBScript</TD><TD>
<% if (bc.vbscript = TRUE) then %> JA
<% else %> NEIN
<% end if %> </TD></TR>
<TR><TD>JScript</TD><TD>
<% if (bc.javascript = TRUE) then %> JA
<% else %> NEIN
<% end if %> </TD></TR>
</TABLE>
</BODY>
</HTML>
Beispiel
(in dieser Form nicht lauffähig)
<OL>
<%
Set NextLink = Server.CreateObject ("MSWC.NextLink")
count = NextLink.GetListCount ("/data/nextlink.txt")
I =1
%>
<UL>
<% Do While (I <= count) %>
<LI><A HREF=" <%= NextLink.GetNthURL ("/data/nextlink.txt", I) %> ">
<%= NextLink.GetNthDescription ("/data/nextlink.txt", I) %>
</A>
<%
I = (I + 1)
Loop
%>
</UL>
Mit dem obigen Codeausschnitt können Sie unter Verwendung der Datei next-
link.txt, die eine Beschreibung der verfügbaren Verknüpfungen enthält, ein klei-
nes 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 Linking-
Listendatei gespeichert sind.
392 Die Komponente Content Linking
Syntax
GetListCount(listenURL)
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)
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 ent-
hä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
<A HREF="<%= NextLink.GetNextURL ("/data/nextlink.txt") %>">Next Page </A>
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 ent-
hä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 beste-
hen.
394 Die Komponente Content Rotator
%% #2 //Zweiter Bereich
<H1>Text als HTML-Überschrift 1</H1>
<HR>
%% #2
<IMG SRC="bilder/grafik.gif">
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 horizon-
tale 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-Inhaltszei-
chenkette in der Inhaltsplandatei. Jedes Mal, wenn die Seite geladen oder aktuali-
siert 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 nach-
folgend 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.
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 Metho-
den 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 – verwen-
den 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:
<OBJECT
RUNAT=Server
SCOPE=Application
ID=PageHits
PROGID="MSWC.Counters">
</OBJECT>
Dieses Beispiel erstellt ein Objekt mit der Kennung PageHits. Wie bereits
erwähnt, greifen Sie auf die Funktionalität des Counterobjekts über die entspre-
chenden Methoden zu, die im Folgenden erläutert werden.
Get
Mit dieser Methode holen Sie den aktuellen Wert des Counters. Wenn kein Coun-
ter 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") %>
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 ver-
fü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.
Hinweis
Ein Client, der mit einem Server, auf dem die Komponente IIS-Protokol-
lierung ausgeführt werden soll, eine Verbindung herstellt, muss als Admi-
nistrator 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)
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], [AusgabeLogDa-
teiFormat])
Parameter
• dateiname. Der Name der zu öffnenden Protokolldatei.
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()
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 Protokolldateiein-
trag.
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
Cookie
Mit dieser Eigenschaft können Sie den Cookie eines Clients untersuchen.
Syntax
var=cookie
Kapitel 17 • Installierbare ASP-Komponenten 403
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 aktu-
ellen Protokolleintragobjekts.
Syntax
var=DateTime
Die Variable var enthält die von der Protokolldatei zurückgegebenen Datums-
und 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
ProtocolVersion
Mit dieser Eigenschaft können Sie die Protokollversion des aktuellen Protokol-
leintrags 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 aufgezeichne-
ten 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 ent-
spricht 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 Anschlus-
ses, 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 verwen-
det).
TimeTaken
Diese Eigenschaft gibt die im Protokoll aufgezeichnete Gesamtdauer zurück, die
der Prozess bis zum Abschluss benötigt hat.
Syntax
var=TimeTaken
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 Anforderungszeit-
punkt aufgezeichneten URL holen.
Syntax
var=URIStem
406 Die Komponente IIS-Protokollierung
Die Variable var enthält den Ziel-URL abzüglich eventuell übergebener Parame-
ter.
UserAgent
Mit dieser Eigenschaft geben Sie den Benutzeragenten des Browsers als Zeichen-
kette zurück.
Syntax
var=UserAgent
Die Variable var enthält den im Protokoll für den Anforderungszeitpunkt aufge-
zeichneten 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 Vor-
gangs 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 Zeit-
punkt des Vorgangs ausgestellt wurde.
Syntax
var=Win32Status
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 407
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 ent-
halten soll.
<% MeinEigenesInfoObjekt.LieblingsFarbe = "Blau"
MeinEigenesInfoObjekt.Auto = "7er BMW"
%>
Dieses Beispiel erstellt zwei neue Eigenschaften für das Objekt MeinEigenesInfo-
Objekt, nämlich LieblingsFarbe und Auto. Dann werden den beiden Eigenschaf-
ten 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.
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 be-
inhaltet. 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
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") %>
Dieser kleine Codeausschnitt zeigt die Fehlermeldung 401: Nicht autorisiert an,
wenn ein Benutzer ohne Benutzernamen versucht, auf die Seite zuzugreifen. Auf-
grund dessen wird IIS versuchen, die Autorisierung mit Hilfe einer der kennwort-
basierten Authentifizierungsmethoden vorzunehmen.
Tipp
Ich empfehle Ihnen die Verwendung der Standardauthentifizierung,
damit sichergestellt ist, dass auch andere Browser als der Internet Explo-
rer bedient werden. Netscape und andere Browser unterstützen die
Authentifizierungsmethode NTLM (Windows NT LAN Manager) nicht.
Außerdem funktioniert NTLM manchmal nicht, wenn eine Proxyverbin-
dung verwendet wird.
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 Win-
dows-Plattform zu verwenden, werden alle Statuseigenschaften als unavailable
(nicht verfügbar) zurückgegeben. Um den Serverstatus für ASP-Skripts zu über-
geben, 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
• 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.
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 %>
<img src="C:\InetPub\wwwroot\images\logo.gif">
<% End If %>
Owner
Mit dieser Methode stellen Sie fest, ob der aktuelle Benutzer der Siteadministra-
tor 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-Server-
Plug-In auf dem System vorhanden ist. Sie spezifizieren den Namen des Plug-Ins
als Parameter der Methode wie im folgenden Beispiel:
Tool.PluginExists(PlugInName)
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 ent-
hä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 einzu-
schrä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-Platt-
form 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 Pro-
tokolldateien zu durchsuchen und basierend auf den in diesen Dateien vorhande-
nen Daten Berichte zu erstellen. Dadurch werden der Export der Daten in eine
Textdatei und das nachfolgende Auffinden relevanter Daten mit einer entspre-
chenden Suchanwendung unnötig gemacht.
Andere Komponenten wie Content Rotator oder Content Linking können admi-
nistrative 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
Dieser Anhang enthält für Sie – den Administrator – eine Referenz der Registrie-
rung, der Metabasis und der Windows-Ereignisse, die für IIS relevant sind. Sie
finden hier außerdem Informationen zu Leistungsindikatoren, Timeouts und Pro-
tokollierungseigenschaften. Jeder Bereich wird dabei in einem eigenen Abschnitt
bearbeitet.
A.1 Registrierung
Wie Sie bereits wissen, speichert die Windows-Registrierung Konfigurationsda-
ten 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 Registrierungsedi-
toren 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 BEARBEI-
TEN, 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 Regist-
rierung 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.
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. Inso-
fern sollte eine Aktivierung nur stattfinden, wenn Ihr Server tatsächlich Zertifi-
kate 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 ausge-
lastet 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 Prozes-
sor fest, die gleichzeitig für einen laufenden E/A-Vorgang ausgeführt werden kön-
nen. 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 Über-
tragung 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 bezeich-
net, für die Objekte im Cache gehalten werden. Sie verwenden ihn, um zu verhin-
dern, 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 deak-
tivieren, indem Sie diesem Schlüssel den Wert 0xFFFFFFFF zuweisen. Alle zwi-
schengespeicherten Objekte bleiben im Cache, bis sie überschrieben werden. Ich
rate von dieser Vorgehensweise ab, wenn Ihr Server nicht über genug Speicher-
ressourcen 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/A-
Threads 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 Benut-
zernamens 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.
AllowGuestAccess
Typ: REG_DWORD. Bereich: 1,0. Standard: 1 (aktiv)
Dieser Wert legt fest, ob Gastanmeldungen für die auf diesem Server ausgeführ-
ten 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 Ein-
trag 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 Nichtstandardskriptspra-
chen 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 wer-
den 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 hun-
dertprozentige Kompatibilität mit IIS gegeben ist. Falls Sie sich nicht sicher sind,
sollten Sie besser VBScript oder JScript lernen.
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 Son-
derzeichen ( |(,;%< >) 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 hier-
bei um eine unter Sicherheitsaspekten sehr zweifelhafte Einstellung, denn sie
kann von einem Eindringling zur Ausführung von Befehlen auf dem Server ver-
wendet werden.
DLCSupport
Typ: REG_DWORD. Bereich: 0, 1. Standard: 0.
Wenn Sie mehrere virtuelle Webseiten auf dem Server betreiben, die Hostheader-
namen 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 Downle-
vel-Clients enthält. Dieses ist im nachfolgend behandelten Eintrag DLCCookie-
MenuDocumentString 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 Downlevel-
Clients 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 unter-
stü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 Downlevel-
Clients 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 Protokollda-
tei 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 Anwei-
sung #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üh-
ren. 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 weiterge-
leitet 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.
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 sei-
ner Konfigurationsdaten. Dadurch wird die Manipulation dieser Konfigurations-
daten mit Hilfe von Skriptsprachen sehr erleichtert. Die Metabasis konfiguriert
die Konfigurationswerte als Objekte, auf die jede Skriptsprache mit Automations-
aktivierung zugreifen kann.
Warnung
Die direkte Konfiguration der Metabasis ähnelt der direkten Bearbeitung
der Registrierung. Es gibt gewisse Risiken, d.h. unangemessene Konfigu-
rationsänderungen können zum Ausfall eines Dienstes führen. Am bes-
ten verwenden Sie das IIS-Snap-In oder das HTML-Administrationstool,
um die notwendigen Änderungen an der Metabank vorzunehmen.
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 vir-
tuellen 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
Leider werden auch dann, wenn Sie diese Option aktiviert haben, immer noch
nicht alle ASP-Fehler an das Ereignisprotokoll gesendet. Wenn Sie alle ASP-Feh-
ler protokollieren wollen, müssen Sie der Metabasis-Eigenschaft AspErrorsToNT-
Log den Wert TRUE zuweisen. Weitere Hinweise zur Einstellung von Metabasis-
Eigenschaften und IIS Admin Objects sowie zur Einstellung dieser Eigenschaft
finden Sie in Kapitel 14.
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 Daten-
quelle %1 aufgebaut werden. Fehlermeldung [%2].
100 Der Server konnte das Windows-Konto '%1' aufgrund des folgenden Feh-
lers nicht anmelden: %2 Die Daten enthalten Fehlerinformationen.
101 Der Server konnte den virtuellen Stamm '%1' für das Verzeichnis '%2' auf-
grund 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 Fehlerinfor-
mationen.
103 Der Server konnte die ODBC-Datenquelle %1, Tabelle: %2, Benutzer-
name %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 Administra-
tionstools nicht registrieren. Der Server kann möglicherweise nicht vom
Administrationstool erkannt werden. Die Daten enthalten Fehlerinforma-
tionen.
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 ent-
halten 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 Fehlerin-
formationen.
113 Die Bindungsbeschreibung %2 der Instanz %1 ist ungültig.
114 Die sichere Bindungsbeschreibung %2 der Instanz %1 ist ungültig (Host-
name ignoriert).
115 Der Dienst konnte Instanz %1 nicht verbinden. Die Daten enthalten Fehle-
rinformationen.
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 wur-
den 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 GetData-
Methode aus den Daten entfernt werden. Verwenden Sie die DeleteData-
Methode, 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 noch-
mals ab.
3 Die Abfragedatei %1 konnte nicht geöffnet werden. Die Datei ist mögli-
cherweise nicht vorhanden, oder Sie haben keine ausreichenden Berechti-
gungen, die Datei zu öffnen.
4 Die Vorlagedatei %1 konnte nicht geöffnet werden. Die Datei ist mögli-
cherweise nicht vorhanden, oder Sie haben keine ausreichenden Berechti-
gungen, 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. CON-
TAINS ist nur gültig, wenn Zeichenfolgen verwendet werden.
9 In der Vorlagedatei steht ein Ausdruck, der eine Zeichenfolge mit Anfüh-
rungszeichen verwendet. Das Anführungszeichen am Ende der Zeichen-
folge 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 ordnungs-
gemäß 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 wer-
den: 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-Feh-
lercode = %1.
22 ISAPI-Anwendung hat versucht, diese Adresse zu senden: %1
23 #EXEC '%1' kann nicht ausgeführt werden, weil keine Ausführberechti-
gung 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 maxi-
male 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 429
Kennung Beschreibung
28 #EXEC-Aufrufe sind für diesen virtuellen Pfad deaktiviert.
29 Es ist eine #INCLUDE-Kette mit '%1' vorhanden.
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 wer-
den. 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 ent-
halten 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 maxi-
male 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-Mana-
ger 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 maxi-
mal 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.)
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 enthal-
ten 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 überschrit-
ten.
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
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 Zeichen-
folge.
103 Zahl erwartet. Die Funktion erwartet die Eingabe eines numerischen Wer-
tes.
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 Skriptbegren-
zungszeichen (%>).
117 Skriptendzeichen fehlt. Im Skriptblock fehlt das Skriptendzeichen
(</SCRIPT>) oder das Endzeichen (>).
118 Objektendzeichen fehlt. Im Objektblock fehlt das Objektendzeichen
(</OBJECT>) 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 Anwen-
dungs- oder Sitzungsbereich enthalten. Das gilt für alle in der Datei glo-
bal.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 Begrenzungs-
zeichen.
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äg-
strich 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 Klas-
sen-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 Include-
Anweisungen.
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 inner-
halb 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 hin-
zugefü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 zuge-
griffen.
167 Fehler beim Initialisieren der Sitzung. Beim Initialisieren des Sitzungsob-
jekts 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 ordnungsge-
mäß 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 Map-
Path-Methode nicht zulässig.
176 Pfad nicht gefunden. Der Pfadparameter für die MapPath-Methode ent-
spricht 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 Anwen-
dungsobjekts 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-Threading-
modell verwendet, kann nicht innerhalb des Anwendungsobjekts gespei-
chert 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ön-
nen nicht zur Sitzung hinzugefügt werden.
189 Unzulässige Objektverwendung. Durch Objekttags erstellte Objekte kön-
nen 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 Apartment-
Modell entsprechend verhält, kann nicht zum Anwendungsobjekt hinzu-
gefü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 Auflis-
tung 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 ASP-
Objekt 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ön-
nen 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 unbe-
kannt 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 Registrie-
rung übereinstimmt.
224 Typbibliothek kann nicht geladen werden. Die Typbibliothek aus META-
DATA-Tag kann nicht geladen werden.
225 Kein Wrapping für Typbibliotheken möglich. Es konnte kein Typbiblio-
thek-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 fehlge-
schlagen.
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 fehlge-
schlagen.
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-Skriptquell-
datei, 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ülti-
gen oder fehlenden SRC-Parameter.
237 Ungültige Cookie-Spezifikation. METADATA-Tag enthält einen ungülti-
gen 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 Aus-
nahme %X.
242 Abfrage OnStartPage-Schnittstellenausnahme. Abfrage von den OnStart-
Page- oder den OnEndPage-Methoden von Objekt '%s' verursachte Aus-
nahme %X.
Tab. A.3: Ereignisse in Bezug auf Active Server Pages (Forts.)
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
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
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
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
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 443
Leistungsindikator 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
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.
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 Diens-
tes.
Abgebrochene Transaktionen. Die Anzahl der abgebrochenen Transaktionen.
Durchgeführte Transaktionen. Die Anzahl der bestätigten oder abgeschlosse-
nen Transaktionen.
Transaktionen in Bearbeitung. Die Anzahl der gegenwärtig bearbeiteten Trans-
aktionen.
Transaktionen insgesamt. Die Gesamtzahl der begonnenen Transaktionen seit
Starten des Dienstes.
Transaktionen/s. Die Anzahl der pro Sekunde begonnenen Transaktionen.
Präfix Bedeutung
s- Serveraktionen
c- Clientaktionen
cs- Client-zu-Server-Aktionen
sc- Server-zu-Client-Aktionen
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 Ad-
ministrator 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ücksetzungs-
intervall 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/ Eines der folgenden Ereignisse ist eingetreten: das Protokollinter-
Start/Stop vall 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 CGI-
oder Out-of-Process-Anwendung den vom Administrator festge-
legten Ereignisprotokollgrenzwert erreicht hat.
Priority-Limit In der Website wurde für eine CGI- oder Out-of-Process-Anwen-
dung niedrige Priorität festgelegt, da der vom Administrator fest-
gelegte Grenzwert für niedrige Priorität erreicht wurde.
Process-Stop- In der Website wurde eine CGI- oder Out-of-Process-Anwendung
Limit beendet, da der vom Administrator festgelegte Grenzwert für Pro-
zessbeendigung erreicht wurde.
Site-Pause-Limit- In der Website wurde eine CGI- oder Out-of-Process-Anwendung
Reset angehalten, da der vom Administrator festgelegte Grenzwert für
das Anhalten der Site erreicht wurde.
Eventlog-Limit- Der Wert für das Zurücksetzungsintervall wurde erreicht, oder
Reset Eventlog-Limit wurde manuell zurückgesetzt.
Priority-Limit- Der Wert für das Zurücksetzungsintervall wurde erreicht, oder
Reset Priority-Limit wurde manuell zurückgesetzt.
Process-Stop- Der Wert für das Zurücksetzungsintervall wurde erreicht, oder
Limit-Reset 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.)
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 Platz-
halter entspricht.
! Keine Umleitung.
Tab. A.9: Umleitungsvariablen
Beispiele
• $S. Wenn die ursprüngliche Anforderung http://localhost/default.htm lau-
tete, 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 überge-
bene 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 IIsCertMapper
Mit Hilfe des Objekts IIsCertMapper werden Windows-Benutzerkonten Zertifi-
kate 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
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 Windows-
Konto. 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 bereitge-
stellt wurden.
Syntax
IIsCertMapper.GetMapping suchMethode, strKey, vCert, strAcct, strPasswd, strNa-
me, 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
SetAcct
Mit dieser Methode wird ein neuer Wert für die Zeichenfolge des Windows-
Kontos 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 Windows-
Kontos 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-Kenn-
worts in einer vorhandenen Zertifikatszuordnung festgelegt.
Syntax
IIsCertMapper.SetPwd suchMethode, strKey, strPwd
B.2 IIsCompressionSchemes
Das Objekt IIsCompressionSchemes ist ein ADSI-Containerobjekt, dass die ein-
zelnen HTTP 1.1-Komprimierungsverfahren enthält, die IIS über das ADSI-
Objekt 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
Die Variable varRückgabe enthält den Rückgabewert der Methode. objekt enthält
das von der Methode GetObject zurückgegebene IISCompressionSchemes-
Objekt. 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.
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 IIsCompression-
Scheme sind in dem ADSI-Containerobjekt IIsCompressionSchemes enthalten.
462 IIsComputer
ADsPath
IIS://computername/W3SVC/Filters/Compression/Scheme
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.
Methoden
Methoden für ADSI-Objekte.
Wenn dieses Objekt kein Containerobjekt ist, sind die Methoden für ADSI-
Containerobjekte 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 festle-
gen, die die Funktionsweise von IIS bestimmen. Es handelt sich hierbei um ein
ADSI-Containerobjekt.
Dem Objekt sind vier Methoden zugeordnet, mit denen Sie mehrere Sicherungs-
versionen im Langzeitspeicher ablegen, die Metabasis von einer Sicherungsver-
sion Ihrer Wahl wiederherstellen und Sicherungskopien auflisten und löschen
können.
Anhang B • Referenz für IIS Admin Objects 463
ADsPath
IIS://computername
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.
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 gespei-
chert werden.
Syntax
IIsComputer.Backup SicherungsPfad, SicherungsVersion, SicherungsOptionen
Parameter
SicherungsPfad ist eine Zeichenfolge mit bis zu 100 Zeichen, die den Sicherungs-
pfad 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 zuge-
wiesen 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
Hinweis
Der Speichermechanismus für die Sicherung wird von IIS bestimmt, so
dass der von Ihnen angegebene Name für den Sicherungspfad nicht not-
wendigerweise in ein bestimmtes Verzeichnis, eine bestimmte Datei
bzw. einen bestimmten Speichermechanismus übersetzt wird. In dieser
Version werden Sicherungskopien der Metabasis als Dateien im Ver-
zeichnis 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 Sicherungs-
pfad 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 Para-
meter die Konstante MD_BACKUP_HIGHEST_VERSION verwendet werden, die
die höchste Sicherungsversionsnummer aus dem angegebenen Sicherungsver-
zeichnis löscht.
Beispiel
<%
Dim objComputer
Set objComputer = GetObject("IIS://computername")
objComputer.DeleteBackup "MeineSicherungen", 1
%>
EnumBackups
Diese Methode listet alle Sicherungen der Metabasis im angegebenen Sicherungs-
verzeichnis auf. Dabei werden die folgenden Werte für jede Sicherung zurückge-
geben:
• Sicherungspfad
• Versionsnummer
• Sicherungsdatum
Syntax
IIsComputer.EnumBackups SicherungspfadIn, IndexIn, SicherungsverAus, Sicherungs-
pfadAus, SicherungsdatumZeitAus
SicherungspfadIn ist eine Zeichenfolge mit bis zu 100 Zeichen, die den Siche-
rungspfad 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 UTC-
Format (Universal Time Coordinate) aus.
Beispiel
<%@ LANGUAGE=VBScript %>
<SCRIPT LANGUAGE = "JScript" RUNAT = SERVER>
var TempDate = new Date();
TempDif = TempDate.getTimezoneOffset();
466 IIsComputer
Session("sTempDif") = TempDif;
</SCRIPT>
<%
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 "<BR>"
Index = Index + 1
Loop
%>
Restore
Mit dieser Methode können Sie die Metabasis aus einer Sicherungskopie wieder-
herstellen. Beim Wiederherstellungsvorgang werden alle von IISADMIN abhängi-
gen 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 verwen-
deten. localhost kann nicht als Computername verwendet werden. Aufgrund die-
ser 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 Siche-
rungspfad 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 Siche-
rungsverzeichnis 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 die-
nen zur Versionskontrolle, jedoch nicht zur computerübergreifenden
Replikation. Eine Sicherungskopie der Metabasis darf nur auf dem Com-
puter wiederhergestellt werden, auf dem sie ursprünglich erstellt wurde.
B.5 IIsCustomLogModule
Mit dem Objekt IIsCustomLogModule können Sie benutzerspezifische Protokoll-
informationsfelder konfigurieren.
ADsPath
IIS://computername/Logging/CustomLogging
IIS://computername/Logging/CustomLogging/Feld
IIS://computername/Logging/CustomLogging/Feldergruppe
IIS://computername/Logging/CustomLogging/Feldergruppe/Feld
Eigenschaften
ADSI-Objekteigenschaften
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 gegebenen-
falls die Nummer eines Webservers.
Syntax
varRückgabe = objekt.methode
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 Eigen-
schaft 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 gegebenen-
falls die Nummer eines Webservers.
Syntax
varRückgabe = objekt.methode
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üs-
sel Info des Schlüssels MSFTPSVC gespeichert. Mit diesem Objekt können Sie
Werte für diese Eigenschaften festlegen.
ADsPath
IIS://computername/MSFTPSVC/Info
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 FTP-
Verzeichnisse 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
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
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 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 ganz-
zahlige Werte.
474 IIsFtpService
Syntax
IIsFtpServer.Status
Rückgabewerte
• 1. Es wird gestartet.
• 2. Gestartet.
• 3. Es wird beendet.
• 4. Beendet.
• 5. Es wird angehalten.
• 6. Angehalten.
• 7. Der Server wird fortgesetzt.
B.10 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
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
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 FTP-
Verzeichnis oder sämtliche virtuellen FTP-Verzeichnisse eines FTP-Servers fest-
legen.
Wenn Sie dieses Objekt auf das virtuelle Stammverzeichnis des Servers anwen-
den, gelten die vererbbaren Eigenschaftswerte für sämtliche virtuellen FTP-
Unterverzeichnisse des virtuellen Stammverzeichnisses, sofern auf untergeordne-
ter 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
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
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 Benutzer-
zugriff standardmäßig gewährt oder verweigert wird.
ADsPath
Der Pfad für das virtuelle Stammverzeichnis des Servers lautet:
IIS://computername/W3SVVC/N/ROOT
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 zugegrif-
fen, über das der Zugriff auf den Server nicht gestattet ist.
• DomainGrant. Mit dieser Methode wird auf ein Array von Domänen zuge-
griffen, über das der Zugriff auf den Server gestattet ist.
• GrantByDefault. Mit dieser booleschen Eigenschaft wird ermittelt, ob der Be-
nutzerzugriff 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.
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öch-
ten.
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öch-
ten.
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 stan-
dardmäß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 Funkti-
onsweise 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
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 483
B.14 IIsLogModules
Das Objekt IIsLogModules ist ein ADSI-Containerobjekt, in dem eine Auflistung
der Objekte vom Typ IIsLogModule enthalten ist. Mit Hilfe des Objekts IIsLog-
Modules können Sie Protokollmodule auf Computerebene verwalten.
Das Objekt ist ein ADSI-Containerobjekt.
ADsPath
IIS://computername/LOGGING
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 & "<BR>"
End If
Next
Response.Write objCurrent.LogFileDate
End If
%>
484 IIsMimeMap
B.15 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
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 MimeMap-
Objekte 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-Zuordnun-
gen 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 Eigen-
schaft 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 Webver-
zeichnis konfigurieren, gelten die vererbbaren Eigenschaften für sämtliche Unter-
verzeichnisse 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
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
AspThreadGateLoadHigh AspThreadGateLoadLow
AspThreadGateSleepDelay AspThreadGateSleepMax
AspThreadGateTimeSlice AspTrackThreadingModel
AuthAnonymous AuthBasic
AuthFlags AuthNTLM
AuthPersistence AuthPersistSingleRequest
AuthPersistSingleRequestIfProxy
AuthPersistSingleRequestAlwaysIf-
Proxy
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
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ön-
nen 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-Anwen-
dung (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 aus-
gefü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 Prozessbe-
reich 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 aus-
geführt wird, werden sämtliche Ressourcen, die ihr zugeordnet sind, wie z.B.
Out-of-Process-Anwendungen, freigegeben, wenn nicht eine andere In-Process-
Anwendung auf die Ressource verweist.
Warnung
Mit AppDelete durchgeführte Löschvorgänge können nicht wieder rück-
gä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 Meta-
basisschlü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 Res-
source 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 deaktivie-
ren. 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 Anwen-
dung 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 unterge-
ordneten Schlüsseln werden deaktiviert.
Alle Ressourcen der Anwendung werden freigegeben und die Anwendungspro-
zesse werden beendet. Ein Zugriff auf diese Anwendung ist dann nicht mehr
492 IIsWebDirectory
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 abru-
fen.
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 An-
wendung 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-Process-
Anwendung 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 Unter-
schied 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 star-
ten, 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 495
B.18 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 überschrie-
ben.
ADsPath
IIS://computername/W3SVC/n/Root/vVerzName/VerzName/DateiName
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
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 Teil-
schlüssel Info des Schlüssels W3SVC gespeichert. Mit Hilfe des Objekts IIsWeb-
Info können Sie Werte für diese Eigenschaften festlegen.
ADsPath
IIS://computername/W3SVC/INFO
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
Methoden
Methoden für ADSI-Objekte
B.20 IIsWebServer
Mit diesem Objekt können Sie Metabasiseigenschaften für einen bestimmten vir-
tuellen 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
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
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 Server-
status 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 vir-
tuellen Webserver festlegen und vererbbare Metabasiseigenschaften für virtuelle
Verzeichnisse, Webverzeichnisse und Webdateien definieren.
Dieses Objekt ist ein ADSI-Containerobjekt.
ADsPath
IIS://computername/W3SVC
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 IIs-
WebServer-Objekt.
methode ist die ausgewählte Methode.
Möglicher Objektinhalt
IIsFilters, IIsWebInfo, IIsWebServer
Eigenschaften
ADSI-Objekteigenschaften
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 Ver-
zeichnis oder sämtliche virtuellen Verzeichnisse einer Website festlegen. Wenn
Sie das Objekt IIsWebVirtualDir auf das Stammverzeichnis des Servers anwen-
den, gelten vererbbare Eigenschaftswerte für sämtliche virtuellen Unterverzeich-
nisse. Sie können Eigenschaften für ein bestimmtes virtuelles Verzeichnis festle-
gen, 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
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 IIs-
WebVirtualDir-Objekt.
methode ist die ausgewählte Methode.
Möglicher Objektinhalt
IIsWebVirtualDir, IIsWebDirectory, IIsWebFile
Eigenschaften
ADSI-Objekteigenschaften
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.
• AppCreate
• AppCreate2
• AppDelete
• AppDeleteRecursive
• AppDisable
• AppDisableRecursive
• AppEnable
• AppEnableRecursive
• AppGetStatus
• AppUnload
• AppUnloadRecursive
• AspAppStart
B.23 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
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«.
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 ver-
wendet. Beispiel: IIS://computername.
Schema Der ADsPath des Objekts. Beispiel: IIS://computername/
schema/IisWebService.
C.2 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 Fol-
genden 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 Vari-
able, 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ück-
gegeben 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 Metabasis-
Eigenschaft. 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ück-
gegeben 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 Eigen-
schaft 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 wer-
den, 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 & "<BR>"
For each Path in varList
Response.Write Path & "<BR>"
Next
ElseIf Err.Number = MD_ERROR_DATA_NOT_FOUND Then
Response.Write "Eigenschaft ist nicht vererbbar.<BR>"
ElseIf Err.Number = &H80005006 Then
Response.Write "Eigenschaft existiert nicht.<BR>"
Else
Response.Write "Fehler " & Err.Number & " " & Err.Description
End If
%>
GetEx
Diese Methode ermittelt einen oder mehrere Werte einer angegebenen Eigen-
schaft des Objekts. Enthält die Eigenschaft nur einen Wert, so wird dieser zurück-
gegeben; 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ück-
gegeben 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
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ück-
gegeben 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 fin-
den.
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ück-
gegeben 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
Hinweis
Diese Eigenschaft unterstützt die Methoden Get und Put nicht – Sie müs-
sen 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ück-
gegeben 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ück-
gegeben 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
SetInfo
Diese Methode schreibt die Eigenschaftswerte in die Metabasis. Sie müssen diese
Methode aufrufen, um Änderungen in der Metabasis zu speichern. Alle geänder-
ten 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ück-
gegeben wurde.
Beispiel
<%
Dim objIIs
Set objIIs = GetObject("IIS://computername/W3SVC/1/Root")
' Code, der Eigenschaften ändert
objIIs.SetInfo
%>
Hinweis
Wenn das IIS Admin Object ebenfalls ein Containerobjekt ist, dann
behält es seine eigenen ADSI-Objekteigenschaften und -methoden. Fer-
ner gelten hierfür auch alle IIS-spezifischen Methoden und die zugehöri-
gen 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ück-
gegeben 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++-Program-
mierung 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 erstel-
len.
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ück-
gegeben 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ück-
gegeben 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 Anwendungsdefini-
tion 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 überge-
ben 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ück-
gegeben 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ück-
gegeben 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 ToobjDir, FromobjDir, RootobjDir
Set RootobjDir = GetObject("IIS://computername/W3SVC/3/ROOT")
Set FromobjDir = GetObject("IIS://computername/W3SVC/3/ROOT/VDir1")
Set ToobjDir = RootobjDir.MoveHere("VDir1", "VDir2")
Set FromobjDir = nothing
%>
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
@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 aufge-
listet.
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 527
Codepage Sprache
866 Russisch
869 Modernes Griechisch
932 Japanisch
936 Chinesisch (VRC)
950 Chinesisch (Taiwan)
Tab. D.1: Codeseiten und die zugeordneten Sprachen (Forts.)
@ENABLESESSIONSTATE
Diese Anweisung wird zum Aktivieren und Deaktivieren des Sitzungsstatus ver-
wendet. Es handelt sich um einen booleschen Wert, der nur die Einstellungen
TRUE und FALSE akzeptiert. Wenn Sie auf Ihrer Website keine Sitzungen einset-
zen, dann sollten Sie den Wert FALSE zuweisen. Dadurch können Sie die Leis-
tung 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 Eigen-
schaft AspScriptLanguage ändern. Diese Eigenschaft kann auf der Ebene des
WWW-Dienstes, des Webservers, eines virtuellen oder physikalischen Verzeich-
nisses gesetzt werden.
528 Referenz: @-Anweisungen
@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ährungsfor-
mate, welche Trennzeichen und Formate für Datum und Uhrzeit verwendet wer-
den.
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 %>
@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 Nut-
zung von ATM. Wenn eine ATM-Transaktion aus irgendeinem Grund unterbro-
chen 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 Transaktio-
nen für das aktuelle Skript verwenden wollen. In diesem Fall erstellen die Kom-
ponentendienste 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 %>
Hinweis
Die Anweisung @TRANSACTION muss in der ersten Zeile der Seite ste-
hen, damit IIS keinen Fehler erzeugt. Sie müssen außerdem sicherstellen,
dass die Anweisung auf jeder Seite vorhanden ist, die Transaktionen
benötigt.
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 Funk-
tionen, 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 Ser-
ver im Basisverzeichnis der Anwendung nach der Datei global.asa; ist diese vor-
handen, 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
</SCRIPT>
Application("PageCounter") = 0
End Sub
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 nor-
malerweise das Ereignis Application_OnEnd verwenden, um alle auf Anwen-
dungsebene 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
</SCRIPT>
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 Anwen-
dung 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 Wer-
ten belegt.
Anhang D • Skriptreferenz 533
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
</SCRIPT>
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 vor-
handenen Objekte sind Application, Server und Session.
Syntax
<SCRIPT LANGUAGE= SkriptSprache RUNAT=Server>
Sub Session_OnEnd
534 Referenz für die Datei global.asa
End Sub
</SCRIPT>
Die Variable SkriptSprache bezeichnet die auf der Seite verwendete Skriptspra-
che.
Beispiel
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnEnd
End Sub
</SCRIPT>
Hinweis
Aus diesem Ereignis heraus können Sie die Methode MapPath nicht auf-
rufen.
Dieses Ereignis ist der richtige Platz für alle Codezeilen, die der Löschung von
Sitzungsvariablen dienen.
D.2.3 <OBJECT>-Deklarationen
Das Tag <OBJECT> 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
<OBJECT RUNAT=Server SCOPE=bereich ID=name { PROGID="ProgID"|CLASSID="ClassID"}>
</OBJECT>
bereich bezeichnet den Bereich des Objekts. In der Datei global.asa ist dies wahl-
weise Application oder Session. name gibt dem Objekt einen Namen, über den es
im Code aufgerufen werden kann. ProgID ist eine Objektkennung, die einer Klas-
senkennung zugeordnet ist; normalerweise ist das Format dieser Kennung anbie-
ter.komponente.version. ClassID ist eine eindeutige Kennung eines COM-
Klassenobjekts.
Anhang D • Skriptreferenz 535
Hinweis
Sie müssen im <OBJECT>-Tag entweder eine PROGID oder eine CLASSID
spezifizieren.
Beispiel
<OBJECT RUNAT=Server SCOPE=Session ID=dbConnection PROGID="ADODB.Connection">
</OBJECT>
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
<!--METADATA TYPE="TypeLib"
FILE="dateipfad"
UUID="TypBibliothekUUID"
VERSION="HöchsteVersionsNummer.NiedrigsteVersionsNummer"
LCID="LocaleID"
-->
Die Variable dateipfad bezeichnet den absoluten Pfad zur Typbibliothek, TypBi-
bliothekUUID ist ihre universelle eindeutige Kennung; einer dieser beiden Para-
meter muss angegeben werden. HöchsteVersionsNummer und NiedrigsteVersions-
Nummer 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 0225. Kein Wrappen für Typbibliothek möglich. ASP kann kein Type-
LibraryWrapper-Objekt für die im Tag <METADATA> angegebene Typbibliothek
erstellen.
Beispiel
<!--METADATA TYPE="TypeLib"
FILE="C:\wwwroot\gkcomput\typelibs\NeueKomponente.tlb"
VERSION="1.0"
LCID="localeid"
-->
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 wer-
den spezifiziert.
Tipp
Am besten setzen Sie Ihre Typendeklarationen in der Datei global.asa
ganz nach oben. Dadurch wird die Bestimmung der im Code verwende-
ten 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ön-
nen 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
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 ver-
wendet. 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.
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
540 Sicherung der Metabasis
50 BuVersion = Wscript.Arguments(Argcount)
51 End If
52
53 Case "-F": ' Force overwrite, even if name and version_
54 exists
55 BuFlags = 1
56
57 Case "-h", "-?", "/?":
58 Call UsageMsg
59 Case Else:
60 If BuName <> "Beispielsicherung" Then ' Only one name allowed
61 Call UsageMsg
62 Else
63 BuName = Wscript.Arguments(ArgCount)
64 End If
65
66 End Select
67
68 ' Move pointer to next argument
69 ArgCount = ArgCount + 1
70
71 Wend
72
73
74
75 ' **Perform Backup:
76 ' First, create instance of computer object
77 Set CompObj = GetObject("IIS://Localhost")
78
79 ' Call Backup method, with appropriate parameters
80 CompObj.Backup BuName, BuVersion, BuFlags
81
82 ' Make pretty version string
83 If BuVersion = &HFFFFFFFF Then
84 VersionMsg = "Nächste Version"
85 Else
86 VersionMsg = "Version " & BuVersion
87 End If
88
89 ' Check for error backing up Metabasis
90 If Err <> 0 Then 'Errors!
91 If Err.Number = &H80070050 Then ' Duplicate backup
92 Wscript.Echo "'" & BuName & "' (Version " & BuVersion &_
93 ") ist bereits vorhanden. Der Schalter -F erzwingt das
94 Überschreiben der Datei."
95 Else ' Something else went wrong
96 Wscript.Echo "Fehler beim Sichern der Metabasis nach '" & BuName &
97 "' (" & VersionMsg & ")."
Anhang E • Beispiele für die programmgesteuerte Administration 541
Das Listing E.1 führt eine Sicherung der Metabasis durch. Wenn Sie den Skript-
befehl zur Ausführung aufrufen, durchsucht eine Parserroutine den eingegebenen
Befehl zunächst nach gegebenenfalls vorhandenen Schaltern, die bestimmte Opti-
onen 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 ange-
fordert, damit der Variablen CompObj ein von der Methode GetObject zurückge-
gebener 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 Parser-
routine 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 Befehls-
fenster 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 Wiederherstellen der Metabasis
10 ' Metabasis
11 '
12 ' To Run:
13 ' -------
14 ' This is the format for this script:
15 '
16 ' cscript metabackrest.vbs
17 '
18 ' NOTE: If you want to execute this script directly from Windows,
19 use
20 ' 'wscript' instead of 'cscript'.
21 '
22 '''''''''''''''''''''''''''''''''''''''''''''
23
24 ' Initialize error checking
25 On Error Resume Next
26
27 ' Initialize variables
28 Dim ArgCount, BuName, BuVersion, BuFlags, CompObj, VersionMsg
29
30 ' Default values
31 ArgCount = 0
32 BuName= "Beispielsicherung"
33 BuVersion = &HFFFFFFFE ' Use highest version number
34 BuFlags = 0 ' RESERVED, must stay 0
35
36
37 ' ** Parse Command Line
38
39 ' Loop through arguments
Anhang E • Beispiele für die programmgesteuerte Administration 543
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 Wiederherstellungs-
vorgang 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 VBScript-
und 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 545
E.3 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
! – SMTP-Dienst 85, 89
#config (Anweisung) 49 – vereinfachen 101
#echo (Anweisung) 50 Administrationsskripts 298
#exec (Anweisung) 52 Administrator 341
#flastmod (Anweisung) 52 – Referenz 415
#fsize (Anweisung) 53 ADO (ActiveX Data Object) 373, 377,
#include (Anweisung) 33, 46, 53 398
– verwenden 49 Adobe Acrobat Reader 368
#include-Dateien 348, 369 ADSI (Active Directory Services Inter-
– benennen 370 face) 25, 298, 317, 321
– einsetzen 370 – Änderungen unter IIS 5.0 522
<OBJECT>-Deklarationen 534 – Containerobjekte 322, 518, 519
@-Anweisungen 526 – Eigenschaften 522
_NewEnum (Eigenschaft) 323 – Methoden 512
– Objekte 321
A – Objekteigenschaften 512
Abandon (Methode) 532 – Referenz 511
Ablaufrichtlinien 120, 127 ADSI-Containerobjekte 322
Access Control List siehe ACL 118, 182 – Eigenschaften 518
ACL (Access Control List) 118, 182, 196, – Methoden 519
410 ADSI-Objekte 321
Active Directory 114, 154, 220 – Eigenschaften 512, 522
Active Server Pages siehe ASP 25 ADSI-Pfad 319, 324
ActiveHTTPSessions (Eigenschaft) 411 ADsPath (Eigenschaft) 512
ActiveX Data Object siehe ADO 373 adsutil (Befehl) 298, 299
Ad Rotator (Komponente) 384 Affinität 289
– Eigenschaften 386 Aliasdomäne 110
– Übersicht 384 ALL_HTTP (Variable) 50
Administration Anforderung umleiten 36, 38
– abwärtskompatible 83 Anmeldungsfehlschläge (Leistungs-
– Aufgaben 323 indikator) 129
– Beispiele 537 Anmeldungsversuche (Leistungs-
– HTML-Tool 323 indikator) 129
– NNTP-Dienst 85, 127 Anschluss 51
– programmgesteuerte 315, 537 Anschlussregeln 287, 290
– Skripts 298 Anwendung (Objektbereich) 367
548 Stichwortverzeichnis
H – Konstanten 509
Hacker 72, 185 – Leistungsmerkmale 522
Handles 263, 316 – Metabasis 317
HasAccess (Methode) 409 – Namensauflösung 148
HighHTTPSessions (Eigenschaft) 411 – neu starten 74
Hits (Methode) 408 – Neustart des Dienstes 23
Hop Count 108 – Objekte 456
Hostheadernamen 58, 65, 72, 420, 421 – Programmierbarkeit 24
– Unterstützung 77 – Protokollierung 424
Hostname 148 – Registrierungseinträge 416, 418, 419,
– des Clients 51 422
– des Servers 51 – Registrierungseinträge für den FTP-
hosts (Datei) 67, 153, 157 Dienst 422
HTML, Inhaltsrotation 394 – Registrierungseinträge für den WWW-
HTTP 234 Dienst 419
– Administration über 335 – Remoteadministration 321, 323, 327
HTTP_ACCEPT (Variable) 51 – Sicherheit 181
HTTP-Header 41, 50 – sichern 79
HTTP-Keep-Alives 276 – Sicherung 23
– aktivieren 277 – Skripts 298
HTTP-Komprimierung 27, 277 – wiederherstellen 79
– konfigurieren 278 – Wiederherstellung 23
Hyperlink 404 IIS Admin Base Object 316
– Benutzertypen 317
I – Vererbung 317
IADsContainer (Schnittstelle) 322 IIS Admin Objects 316, 320
IDC (Internet Database Connector) 172 – Automationsaktivierung 317
Identitäten 73 – Konstanten 509
– verifizieren 156 – Objekte 456
IETF (Internet Engineering Task Force) – Übersicht 321
230 IIS Computer (Schlüssel) 318
IIS (Internet Information Server) IIS 5.0
– administrieren 315 – Funktionen zur Websiteverwaltung 30
– Änderungen in Version 5.0 522 – Websiteverwaltung 30
– Assistenten 209 IIS (Internet Information Server)
– benutzerdefinierte Fehlermeldungen 24 – Version 3.0 83
– dienstspezifische Registrierungseinträge IIS Admin Objects
418 – Referenz 456 ff.
– Einstellungen sichern und wiederher- IIS-Anwendungen 161
stellen 79 – Anwendungsschutz 162, 172
– Ereignisse 424 – ASP-Anwendungen 237
– globale Registrierungseinträge 416 – Ausführberechtigungen 165
– IP-Konfiguration des Servers 152 – ausführen 162
Stichwortverzeichnis 555