Empfohlen: ASP.NET -Methode, um IP- und MAC -Adresse zu erhalten Die Methode zum Erhalten der IP -Adresse des Servers ist einfach und praktisch für die DNS
7.4.4 Verwenden der IIS -Fehlerseite
Was mit dem ASP -Fehlerbehandlungsprozess zusammenhängt, besteht darin, IIS anpassbare Fehlerseiten bereitzustellen. Tatsächlich ist diese Funktion auch in IIS 4.0 zu finden. Das neue ASP-Objekt Asperrror von ASP ist jedoch einfacher zu bedienen und bietet leistungsfähigere Funktionen.
Wenn wir in Kapitel 4 die Methoden von Server.execute und Server.Transfer betrachten, haben wir bereits darüber gesprochen, wie eine angepasste Fehlerseite erstellt wird. Wir haben auch das Asperror -Objekt diskutiert und verwendet, aber diese Methode unterliegt bestimmten Einschränkungen. In diesem Abschnitt werden wir vorstellen, wie Sie eine angepasste Fehlerseite mit einem Asperror -Objekt kombinieren, um eine bessere Möglichkeit zu erstellen, ASP -Fehler zu behandeln.
Wir können VBScript verwenden, um den Inhalt des Asperror -Objekts zu überprüfen und so eine benutzerdefinierte Fehlerseite zu erstellen. Erstellen Sie eine Zeichenfolge, die umfassende Informationen über den Fehlerinhalt enthält, und schreiben Sie sie in eine Protokolldatei auf der Serverdiskette. Es ist jedoch nicht möglich, eine Webseite zu entwerfen, um den Besucher nur zu sehen, dass die Webseite nicht verfügbar ist. Es sollte den Besuchern ermöglichen, zu wählen, ob die vorherige Webseite neu geladen oder zur Startseite zurückgekehrt werden sollen, damit sie nicht wissen, dass ein Fehler aufgetreten ist.
Obwohl wir VBScript verwenden, um diese Webseite zu erstellen, sind einige der von ihnen verwendeten Funktionen auch für JScript anwendbar und es ist auch einfacher, die beiden Skriptsprachen umzuwandeln.
Beispieldateien für dieses Kapitel und andere Kapitel dieses Buches können von der Website http://www.wrox.com heruntergeladen werden.
1. Einrichten benutzerdefinierter Fehlerseiten einrichten
Bevor Sie eine angepasste Fehlerseite verwenden können, müssen Sie die entsprechenden Einstellungen im Internet Services Manager vornehmen (siehe Kapitel 4, um Methoden einzurichten). Laden Sie die Beispieldatei in das WWWROOT -Verzeichnis des Computers, öffnen Sie das Dialogfeld "Eigenschaften" des Unterabschnitts in Kapitel07, in der Registerkarte "benutzerdefinierte Fehler", scrollen Sie die Liste und wählen Sie den HTTP -Fehler 500: 100 -Eintrag, klicken Sie auf die Schaltfläche "Eigenschaften" bearbeiten und geben Sie die URL der benutzerdefinierten Fehlerseite benutzerdefiniert.
Wenn nun ein ASP -Fehler auf der Seite in Kapitel07 -Unterabzeichnung auftritt, wird die angepasste Fehlerseite geöffnet.
2. Verwenden Sie die benutzerdefinierte Fehlerseite
Öffnen Sie das Verzeichnis von Kapitel07 in Ihrem Browser und wählen Sie den Link zur Verwendung einer benutzerdefinierten Fehlerseite aus. Auf dieser Seite werden eine Reihe von Schaltflächen angezeigt, um verschiedene Arten von Fehlern zu generieren. Klicken Sie auf die Schaltfläche, in der eine Seite mit einem Syntaxfehler geladen wird.
Dadurch wird eine einfache Seite namens Syntax_error.asp geladen. Diese Seite kann jedoch nicht angezeigt werden, da diese Seite einen Syntaxfehler enthält. ASP beendet die Kompilierung/Ausführung dieser Seite und überträgt die Ausführung auf die benutzerdefinierte Fehlerseite. Auf dieser Seite werden die Details des Fehlers und der zwei Schaltflächen angezeigt, die zur Rückkehr zur vorherigen Seite (Hauptmenü) oder zur Rückkehr zur Standard -Startseite der Website verwendet werden.
Diese Seite findet auch den Fehlerbericht an die Protokolldatei mit dem Namen Custom_Error.log im Serverdisk. C:/Tempordner an. Es kann im Datei -Editor geöffnet und angezeigt werden. Die Protokolldatei hat mehrere Fehler aufgezeichnet.
Wenn Sie auf der Seite eine Nachricht erhalten, die angibt, dass die Protokolldatei nicht geschrieben werden kann, kann dies darauf liegen, dass das Konto iusr_machinenname (iusr_computer -Name) keine Berechtigung hat, auf das Verzeichnis c:/temp zuzugreifen. Beim Testen dieser Seite sollte das Konto iusr_maachinename alle Kontrolle über dieses Verzeichnis oder der Programmcode der Seite Custom_Error.asp gewechselt werden, um auf einen Ordner zu verweisen, in dem IUSR die volle Kontrolle hat.
Der einzige Grund, warum die Fehlermeldung auf der Seite angezeigt wird, ist, dass wir auf der Seite cause_error.asp das entsprechende Kontrollkästchen ausgewählt haben. Wenn Sie diese Option deaktivieren und erneut auf die Schaltfläche klicken, werden die Details des Fehlers nicht angezeigt. Die Fehlermeldung wird jedoch weiterhin in der Fehlerprotokolldatei custom_Error.log auf der Serverdiskette aufgezeichnet.
Das Kontrollkästchen Debugging Information bietet benutzerdefinierte Fehlerseiten (anstelle von Protokolldateien) mehr Informationen und hilft beim Debuggen, die die Werte für die Sammlung von ASP-integrierten Objekten verwenden.
Dieses Problem wird später im folgenden Abschnitt dieses Kapitels erläutert, und Sie können auch andere Arten von Fehlerinformationen kennenlernen, die von anderen Schaltflächen auf der Ursache eine Fehlerseite bereitgestellt werden. Beachten Sie, dass einige Schaltflächen mehr Informationen liefern können als andere. Insbesondere gibt nur die letzte Taste den Wert des ASP -Fehlercodes an (hier ist ASP 0177).
(1) Funktionen einer Fehlerseite Ursache
Wie bei den zuvor diskutierten Beispielseiten verwenden die Seiten, die den Fehler verursachen, dieselbe Technik, wobei <Formular> den Wert auf dieselbe Seite übermittelt. Klicken Sie dann auf die Schaltfläche Senden im ASP -Programmansichtsfenster und führen Sie den entsprechenden Teil des Codes aus. Überprüfen Sie auch, ob die beiden Kontrollkästchen auf der Seite ausgewählt sind. In diesem Fall legt das Programm zunächst ein oder zwei Variablen auf Sitzungsebene auf, um dies anzuzeigen.
<%
„Sehen Sie, ob wir Fehler anweisen und Informationen debuggen
Setzen Sie Sitzungsvariablen, um auf der benutzerdefinierten Fehlerseite abzurufen
Wenn Len (Request.Form (Chkshowerror)) dann
Sitzung (Duschror) = Ja
Anders
Sitzung (Duschror) =
Ende wenn
Wenn Len (Request.form (chkshowdebug)) dann
Sitzung (Showdebug) = Ja
Anders
Session (showdebug) =
Ende wenn
...
%>
Aufgrund der Verwendung von Server.transfer wird bei einem Fehler die gesamte ASP -Umgebung der laufenden Webseite von IIS an die benutzerdefinierte Fehlerseite übergeben. Der Wert der Skriptvariablen wird jedoch nicht an die benutzerdefinierte Fehlerseite übergeben, sodass die Sitzungsvariable verwendet werden muss oder der Wert zur Anforderung hinzugefügt werden muss. Form oder Anforderung.
Nach der Einstellung der Sitzungsvariablen wird das Programm weiterhin angezeigt, auf welcher Schaltfläche geklickt wurde. Jeder Fehlertyp (mit Ausnahme des ersten Typs) wird generiert, indem der entsprechende ASP -Code ausgeführt wird, und der erste Fehlertyp erfordert das Aufrufen einer anderen Seite.
...
'Suchen Sie nach einem Befehl, der aus den Schaltflächen des Formularabschnitts gesendet wurde
Wenn Len (Request.Form (CMDSyntax)) dann
Antwort.Clear
Antwort.Redirect syntax_error.asp
Ende wenn
Wenn len (request.form (cmdparamtype)) dann
intdate = fehler
intday = tag (intdate)
Ende wenn
Wenn Len (Request.Form (CMDarray)) dann
Dimer Arthis (3)
Arrthis (4) = verursacht einen Fehler
Ende wenn
Wenn Len (Request.Form (CMDFile)) dann
Setzen Sie OBJFSO = Server.createObject (scripting.filesystemObject)
Setzen Sie objtstream = objfso.opentextFile (do_not_exist.txt)
Ende wenn
Wenn len (request.form (cmdpageCount)) dann
Setzen Sie objpageCount = server.createObject (MSWC.PageCounter)
ObjpageCount.WrongProperty = 10
Ende wenn
Wenn len (request.form (cmdObject)) dann
Setzen Sie objthis = server.createObject (doNot.EXIST)
Ende wenn
Teilen: Es hat schließlich eine Lösung gefunden, um die Grenze des ASP -Indexs zu überschreiten Gestern hatte meine Filmwebsite ein Problem bei der Generierung statischer Inhaltsseiten. Es wurde aufgefordert, die Linie mit dem Index zu überschreiten. Ich hatte es noch nie zuvor begegnet, also wusste ich nicht, was es war, also suchte ich online nach Antworten, aber es war wirklich schwer zu finden. Ich fand viel, konnte aber das grundlegende Problem nicht lösen.