Empfohlen: Nützliche Sammlung von Funktionen in der ASP -Entwicklung (1) Eine Sammlung nützlicher Funktionen in der ASP -Entwicklung ist sehr nützlich! Ich hoffe, jeder behält es! % '****************************************************** 'Prevent external submission'*************************************** function ChkPost() dim server_v1,server_v2 chkpost=false server_v1=Cstr(Request.ServerVari
In VBScript gibt es eine Anweisung für Fehlerbehebung, die dazu führt, dass der Skript -Interpreter Laufzeitfehler ignoriert und die Ausführung des Skriptcode fortsetzt. Anschließend kann das Skript den Wert der ERR.Number -Eigenschaft überprüfen, um festzustellen, ob ein Fehler aufgetreten ist. Wenn ein Fehler auftritt, wird ein Wert ungleich Null zurückgegeben. In ASP 3.0 können Sie auch bei Fehler GOTO 0 verwenden, um zur Standardfehlerbehandlung zurückzukehren. Diese Art der Verarbeitung wird tatsächlich in ASP 2.0 durchgeführt, es gibt jedoch keine entsprechende Dokumentbeschreibung, die in vielen ASP-datenbezogenen Verarbeitungsdateien üblich ist. Fügen Sie den Fehler Lebenslauf neben der Standardfehlerabwicklung hinzu und verwenden Sie dann ERR, um sie zu fangen.Wenn irren
err.clear
Ein Fehler ist als Antwort aufgetreten.Write!
Antwort.end
Ende wenn
Um eine detailliertere Fehlerbeschreibung zu erhalten, versuchen wir das Asperror -Objekt. Es ist ein neues Objekt von Asp3.0. Es kann über die GetLasterRor -Methode des Serverobjekts erhalten werden. Asperror liefert detaillierte Informationen zum letzten Fehler in ASP. Im Gegensatz zum ERR -Objekt in VBScript kann diese Methode zu keinem Zeitpunkt aufgerufen werden, um festzustellen, ob ein Fehler auftritt. Es kann nur in einer ASP -Customized -Fehler -Webseite verwendet werden. Wenn Sie es verwenden, indem Sie die Standardfehlerbehandlung ausschalten (unter Verwendung der Nächsten Anweisung für Fehlerbehebung), wie die Verwendung des ERR -Objekts, kann die GetLasterRor -Methode nicht auf die detaillierten Daten des Fehlers zugreifen.
Eigenschaften des Asperror -Objekts:
Das Asperror -Objekt liefert neun Attribute, um die Art und Quelle des aufgetretenen Fehlers anzuzeigen, und gibt den tatsächlichen Code zurück, der den Fehler verursacht hat. Die Eigenschaften und Beschreibungen sind wie folgt:
ASPCODE: Ganzzahl. Fehlernummer, die von ASP/IIS generiert wird, wie z. B. 0x800a009
ASPDESCRIPTION: String -Typ. Wenn dieser Fehler ein ASP-bezogener Fehler ist, ist diese Eigenschaft eine detaillierte Beschreibung des Fehlers. Zum Beispiel: Alle http: http_accept:*/* http_accept_schwage: zh-cn http_connection: keep-alive http_host: s http_user_agent: mozilla/4.0 (kompatibel; msie 6.0; Windows nt 5.0; (r1 1.5) ... und berichtet.
Kategorie: String -Typ. Die Quelle des Fehlers ist die der ASP -internen Skriptsprache oder eines Objekts.
Spalte: Ganzzahl. Zeichenspeicherort in der Datei, die den Fehler generierte
Beschreibung: String -Typ. Eine kurze Beschreibung des Fehlers
Datei: String -Typ. Der Name der Datei wird verarbeitet, wenn der Fehler aufgetreten ist
Zeile: Ganzzahl. Zeilennummer in der Datei, die den Fehler generierte
Nummer: Ganzzahl. Ein Standard -COM -Fehlercode
Quelle: String -Typ. Der tatsächliche Code der Zeile, der den Fehler erhöhte
Ok, das sind 9 Eigenschaften. Die Syntax der Verwendung des Asperror -Objekts lautet:
Asperror.property
Das ist es: Asperror.aspcode ()
Asperror.aspdescription ()
Asperror.category ()
Asperror.Column ()
Asperror.Description ()
Asperror.file ()
Asperror.line ()
Asperror.number ()
Asperror.source ()
Wenn auf jeder Seite unter allen von IIS unterstützten Verzeichnissen (oder im Verzeichnis, in dem die Fehlerzuordnungseigenschaften bearbeitet werden), ein ASP-bezogenes Fehler auftritt, wird die benutzerdefinierte Fehlerseite geladen. Tatsächlich wurde jetzt eine normale Skriptfehlerfalle festgelegt, da der ASP -Laufzeitfehler auf jeder Webseite in diesem Verzeichnis eine benutzerdefinierte Fehlerseite auslöst. Die Fehlerwebseite ist der Standard -Installationsteil von IIS und kann nach persönlichen Situationen angepasst werden. Wenn wir beispielsweise eine nicht existierende Webseite in ein Verzeichnis eingeben, tritt ein 404-Fehler auf. Wenn ein 404 -Fehler auftritt, ist die verwendete Seite 404b.htm. Diese Datei enthält einen Client -Skript -Code -Teil, der die URL des aktuellen Dokuments (abrufen aus dem URL -Attribut des Dokumentobjekts) und in der Seite anzeigt: [html] <! DocType html public -// w3c // dtd html 3.2 endgültig // en>
<html dir = ltr>
<kopf>
<Styles> A: Link {Schrift: 9PT/11PT 环; Farbe: ff0000} a: besucht {Schriftart: 9pt/11pt 环; Farbe:#4e4e4e}
</style>
<Meta name = roboter content = noIndex>
<titels> Die Webseite kann nicht finden </title>
<Meta http-äquiv = content-type content = text-html; charSet = gb2312>
<Meta name = ms.locale content = zh-cn>
</head>
<Script>
Funktion homepage () {
<!-
// In echten Bits werden URLs wie folgt zu unserem Skript zurückgegeben:
// res: //shdocvw.dll/http_404.htm#http: //www.docurl.com/bar.htm
// zum Testen verwenden docUrl = res: //shdocvw.dll/http_404.htm#https: //www.microsoft.com/bar.htm
DocUrl = document.url;
// Hier werden die HTTP oder HTTPS ermittelt, wie durch die Suche nach: //, aber das res: // überspringt
protocolIndex = docurl.indexof (: //, 4);
// Dies findet den End -Slash für den Domain -Server
serverIndex = docUrl.indexof (/, protocolIndex + 3);
// Für die HREF benötigen wir eine gültige URL für die Domäne. Wir suchen nach dem # Symbol, um den Anfang zu finden
// der tatsächlichen URL und fügen Sie 1 hinzu, um sie zu überspringen - dies ist der BeginnURL -Wert. Wir verwenden ServerIndex als Endmarker.
//urlresult=docurl.substring(ProtocolIndex - 4, serverIndex);
BeginUrl = docUrl.indexof (#, 1) + 1;
urlresult = docUrl.substring (beginurl, serverIndex);
// Für die Anzeige müssen wir nach http: // überspringen und zum nächsten Schrägstrich gehen
displayResult = docUrl.substring (ProtocolIndex + 3, ServerIndex);
InsertElementanchor (urlresult, displayResult);
}
Funktion htmlencode (Text)
{
text zurückgeben.
}
Funktion tagattrib (Name, Wert)
{
return ''+name+'='+htmlencode (value)+'';
}
Funktion printTag (TagName, NeedCloSetag, Attract, Inner) {
document.write ('<' + tagname + sattr + '>' + htmlencode (inner));
if (NeedClosetag) document.write ('</' + tagname + '>');
}
Funktion URI (HREF)
{
Iever = window.navigator.Appversion;
Iever = iever.substr (iever.indexof ('msie') + 5, 3);
return (iever.charat (1) == '.' && iever> = '5.5')?
Encodeuri (HREF):
Escape (href) .Replace (/%3a/g, ':'). Ersetzen (/%3b/g, ';');
}
Funktion InsertElementanchor (HREF, Text)
{
PrintTag ('a', true, tagattrib ('href', uri (href)), text);
}
//->
</script>
<Body Bgcolor = ffffff>
<Tabellenbreite = 410 cellpadding = 3 cellpacing = 5>
<tr>
<td Align = links valign = mittlere Breite = 360>
<h1 style = color: 000000; Schriftart: 12pt/15pt SongTi> <!-Problem-> Die Webseite kann nicht gefunden </h1> gefunden werden
</td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color: 000000; Schriftart: 9PT/11PT> Die Webseite, nach der Sie suchen, wurde möglicherweise gelöscht, umbenannt oder ist vorübergehend nicht verfügbar. </font> </td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color: 000000; Schriftart: 9pt/11pt Song Schrift>
<hr color =#c0c0c0 noshade>
<p> Bitte versuchen Sie Folgendes: </p>
<ul>
<li> Wenn Sie eine Webadresse in die Adressleiste eingegeben haben, überprüfen Sie, dass sie korrekt geschrieben ist. <br>
</li>
<li> öffnen <script>
<!-
if (! ((window.navigator.useragent.indexof (msie)> 0) && (window.navigator.appversion.charat (0) == 2)))
{
Homepage ();
}
//->
</script> Homepage, finden Sie Links zu den erforderlichen Informationen. </li>
<li> Klicken Sie auf <a href = javaScript: history.back (1)> zurück </a>, um andere Links auszuprobieren. </li>
</ul>
<H2 style = Schriftart: 9PT/11PT Songti; Farbe: 000000> HTTP 404 - Datei kann nicht gefunden werden <br> Internetinformationsdienst <br> </H2>
<hr color =#c0c0c0 noshade>
<p> Technische Informationen (unterstützende Personen) </p>
<ul>
<li> Details: <br> <a href = http: //www.microsoft.com/contentredirect.asp? prd = iis & sbp = & pver = 5.0 & pid = & id = 404 & cat = web & os = & over = & hrd = & opt1 = & opt2 = & opt3 = apt3 = act3 = act3 = act3 = teature
</li>
</ul>
</font> </td>
</tr>
</table>
</body>
</html>
[/html]
Wenn ein Fehler auftritt, wird die Zuordnungsbeziehung zwischen dem Fehler und der Fehler -Web -Datei auf der Registerkarte "Benutzerdefinierte Fehler des Dialogfelds Eigenschaften des Dialogfelds jedes Verzeichnisses" ermittelt. Dies befindet sich in den Immobilieneinstellungen im Internet Services Manager. Wenn Sie interessiert sind, schauen Sie sich an.
Benutzerdefinierte Fehler Die Webseite zeigt alle Werte des Asperror -Objektattributs an und gibt eine HTTP -Header -Statusnachricht mithilfe der Antwort der Antwort an den Client zurück, was angibt, dass ein Fehler aufgetreten ist. Verwenden Sie dann die GetLasterRor -Methode, um einen Verweis auf das Asperror -Objekt zu erhalten, damit Sie auf die detaillierten Daten des Fehlers zugreifen können:
…
<%
Antwort.Status = 500 Interner Serverfehler
Setzen Sie objaspeError = server.getLasterRor ()
%>
Derzeit führen Sie die Seite aus: <b> show_error.asp </b> <p>
<b> Fehlerdetails: </b> <br>
Asperror.aspcode = < % = objaspeError.aspcode %> <br>
Asperror.number = < % = objaspeError.number %> (0x < % = hex (objaspeError.number) %>) <br>
Asperror.source = < % = server.htmlencode (objasperror.source) %> <br>
Asperror.Category = < % = ObjaspeError.Category %> <br>
Asperror.file = < % = objaspeError.file %> <br>
Asperror.line = < % = objaspeError.line %> <br>
Asperror.Column = < % = ObjaspeError.Column %> <br>
Asperror.Description = < % = objaspeError.Description %> <br>
Asperror.aspds = < % = objaspeError.aspds %>
<Form action = < % = request.servervariables (http_referer) %> methode = post>
<Eingabe type = senden name = cmdok value = zurück zur vorherigen Seite>
<p>
</Form> Wenn in einer benutzerdefinierten Fehlerseite ein Skript oder ein ASP -Fehler auftritt, gibt IIS nur eine allgemeine Nachricht zurück, die dem Fehlercode 500: 100 entspricht. Dies kann eine Fehlermeldung von der Skript -Engine selbst oder nur eine ziemlich einfache Nachricht sein: interner Serverfehler. Die angepasste Fehlerseite wird nicht erneut neu geladen.
Alle Umgebungen, die die falsche Webseite enthalten, werden an die angepasste falsche Webseite geliefert. Das heißt, Werte, die in einer ASP -Ansammlung oder einem Attribut für interne Objekte gespeichert sind, können verwendet werden. Wenn Sie beispielsweise den Wert http_referer aus der Anfrage abrufen. Servervariables Sammlung, spiegelt sie die URL der Seite wider, die die Originalseite bezeichnete (d. H. Die Seite, die vor dem Fehler aufgetreten war). Dieser Wert ändert sich nicht, wenn der Server die Ausführung auf die falsche Webseite überträgt, und es enthält nicht die URL der Webseite, die beim Auftreten des Fehlers ausgeführt wurde.
In ähnlicher Weise ist der Wert script_name der Name der Seite, die den Fehler enthält, nicht die URL der Seite. Wenn eine Fehlerseite geladen wurde, können Sie dies bestätigen, indem Sie die URL in der Adressleiste des Browsers überprüfen. Die in den Skriptvariablen der Original -Webseite gespeicherten Werte sind jedoch auf der angepassten falschen Webseite nicht verfügbar.
Wenn die ursprüngliche ASP -Webseite innerhalb einer Transaktion ausgeführt wird, befindet sich vor der Webseite eine < % @Transaction =… %> Anweisung. Sie können beispielsweise die SetAbort-Methode mit dem integrierten ObjectContext-Objekt aufrufen:
ObjectContext.setabort
Nun, die Front-End-Zeit hat Tausende von Spam-E-Mails gesendet, die alle fehlerbehandelt sind
Option explizit
Response.addHeader Statuscode, 200
Response.addHeader Grund, OK
Bei der nächsten Fehleraufnahme als nächstes
Antwort.Clear
Dunkelnder Objeerror
Setzen Sie objerror = server.getLasterRor ()
Dimer Objerr, Objmail, HTML
Setzen Sie objerr = server.getLasterror ()
Setzen Sie objmail = createObject (CDONTs.Newmail)
objmail.from = [email protected]
objmail.to = [email protected]
objmail.bodyFormat = 0
objmail.mailFormat = 0
objmail.subject = QOP -Fehler 500
html = <font face = 'Verdana, Arial, Helvetica, Sans-Serif'> <br>
html = html & <p> Fehler aufgetreten bei: & jetzt
html = html & <p> verwiesen von: & Request.Servervariables (http_referer)
html = html & <p> url: & request.servervariables (URL)
html = html & <p> <b> Kategorie: </b> </p> & objerr.category
html = html & <p> <b> Dateiname: </b> </p> & objerr.file
html = html & <p> <b> ASP -Code: </b> </p> & objerr.aspcode
html = html & <p> <b> Nummer: </b> </p> & objerr.number
html = html & <p> <b> Quelle: </b> </p> & objerr.source
html = html & <p> <b> linenumber: </b> </p> & objerr.line
html = html & <p> <b> Spalte: </b> </p> & objerr.column
html = html & <p> <b> Beschreibung: </b> </p> & objerr.description
html = html & <p> <b> ASP Beschreibung: </b> </p> & objerr.aspdescription
html = html & <blockquote>
html = html & alle http: & request.servervariables (All_Http)
html = html & </blockquote> </font>
objmail.body = html
objmail.send
objerr.clear
Objmail setzen = nichts
Ob jerr einstellen = nichts
Antwort.Write (HTML)
Das ist wirklich ärgerlich zu arbeiten. Schauen Sie sich an, was Herr Lao Gai in 500-100 geschrieben hat.
<%
Response.write objasperror.category
Wenn objaspeError.aspcode> dann response.write & objaspeError.aspcode
Response.write (0x & hex (objasperror.number) &) & <br>
Response.write <b> & objasperror.description & </b> <br>
Wenn objaspeerror.aspds> dann response.write objaspeError.aspds & <br>
Blnerrorwritten = false
'Zeigen Sie nur die Quelle an, wenn sie verfügbar ist und die Anfrage von derselben Maschine wie IIS stammt
Wenn objaspeError.source> dann
strSerververation = lase (request.servervariables (server_name))
StrServerip = Request.Servervariables (local_addr)
Strremoteip = Request.Servervariables (Remote_addr)
If (StrServerName = localhost oder strServerip = Strremoteip) und objasperror.file <>? Dann
Response.write objasperror.file
Wenn objasperror.line> 0 dann Antwort.Write, Line & Objasperror.line
Wenn objaspeError.column> 0, dann Antwort.Write, Spalte & ObjaspeError.Column
Response.write <br>
Antwort.Write <font style = color: 000000; Schriftart: 8pt/11pt Courier New> <b>
Response.write server.htmlencode (objasperror.source) & <br>
Wenn objaspeError.column> 0 dann Antwort.Write String ((ObjaspeError.Column - 1), -) & ^<br>
Antwort.Write </b> </font>
Blnerrorwritten = true
Ende wenn
Ende wenn
Wenn nicht Blnerrorwritten und objasperror.file <>? Dann
Response.write <b> & objasperror.file
Wenn objasperror.line> 0 dann Antwort.Write, Line & Objasperror.line
Wenn objaspeError.column> 0, dann Antwort.Write, Spalte & ObjaspeError.Column
Response.write </b> <br>
Ende wenn
%>
Hier ist eine Referenz: ASP 3.0 Advanced Programming In Bezug auf die Eigenschaften der Verwendung von Asperror -Objekten sind die folgenden Punkte zu erwähnen:
· Auch wenn kein Fehler auftritt, sollte die Zahleneigenschaft immer einen Wert haben. Wenn kein Fehler auftritt, wenn die ASP-Webseite die GetLasterRor-Methode aufruft, beträgt der Wert dieser Eigenschaft 0. Normalerweise gibt die Zahl der Numbereigenschaft für den Laufzeitfehler von ASP-Skripten den Hexadezimalwert 0x800a0000 plus den Standard-Skript-Engine-Fehlercode zurück. Zum Beispiel gibt das vorherige Beispiel einen Wert von 0x800A0009 für das Einweis außerhalb des Bereichs zurück, da der Fehlercode für VBScript für diesen Typfehler 9 beträgt.
· Wenn ein Fehler übergeben wurde, haben die Attribute Kategorie und Beschreibung immer einen Wert.
· Der Wert der APSCODE -Eigenschaft wird von IIS generiert und für die meisten Skriptfehler leer. In mehr Fällen gibt es entsprechende Werte, wenn eine externe Komponente verwendet wird.
Der Wert der ASPDescription -Eigenschaft wird vom ASP -Präprozessor generiert, nicht von der derzeit verwendeten Skript -Engine und ist für die meisten Skriptfehler leer. Häufiger gibt es einen entsprechenden Wert für Fehler wie das Aufrufen einer ungültigen Methode für ein ASP-integriertes Objekt.
· Die Eigenschaften von Datei, Quelle, Zeile und Spalten können nur festgelegt werden, wenn ein Fehler auftritt und wenn die detaillierten Fehlerdaten verfügbar sind. Für einen Laufzeitfehler sind die Datei- und Zeileneigenschaften normalerweise gültig, aber die Spalteneigenschaft gibt häufig -1 zurück. Die Quelleigenschaft wird zurückgegeben, wenn der Fehler ein Syntaxfehler ist, der verhindert, dass die Seite durch ASP verarbeitet wird. Im Allgemeinen sind in diesen Fällen die Linien- und Spalteneigenschaften gültig. Wenn Sie den Wert der Quelleigenschaft auf die Seite schreiben, ist es ratsam, den Wert zuerst an HTMlencode weiterzugeben, falls er illegale HTML -Zeichen enthält. Die HTMlencode -Methode wird später in diesem Kapitel ausführlich erörtert.
ERROG ERGALE
Tipps: Dies ist das zweite Mal, dass ich das geschrieben habe, nnd. Der ursprüngliche Fokus lag auf der Einführung des Asperror -Objekts. Ich werde jetzt das Err -Objekt vorstellen. Dies ist ein sehr einfaches und leicht zu ermutigtes Objekt. Lass uns auf der ASP -Seite gehen.
Wenn Sie ein ERR -Objekt verwenden, müssen Sie keine Instanz erstellen. Dies bedeutet, dass Sie sie beiläufig verwenden können, wenn Sie sie verwenden möchten. Genau wie bei der Sitzung müssen Sie keine Instanz erstellen, wie bei der Verwendung eines ADODB -Objekts. Setzen Sie conn = server.createObject (adodb.Connection) wird verwendet, um eine Instanz zu erstellen. Es gibt einen Fehlercode zurück, aber ers! Die Hauptmethode ist eine Beschreibungsmethode, die eine kurze Fehlerbeschreibung zurückgibt. Hier ist ein sehr klassisches Beispiel:
< %@ Sprache = vbScript %>
<%Response.buffer = true
Bei der nächsten Fehleraufnahme als nächstes
%>
<%
S = SA
Antwort.Write (int (s))
Wenn err.number <> 0 dann dann
Antwort.Clear
Als Antwort trat ein Fehler auf. Write:%>
<html>
<kopf>
<title> </title>
</Head>
<body>
Fehlerzahl: < %= err.number %> <br/>
Fehlermeldung: < %= err.description %> <br/>
Fehlerdatei: < %= Err.Source %> <br/>
Fehlerzeile: < %= err.line %> <br/>
< %= Ers %>
</Body>
</Html>
<%Ende wenn%>
Führen Sie es aus und sehen Sie, err.Line ist leer, warum? Da die in ASPs VB geschriebene Zeilenmethode nicht unterstützt wird, ist dies eine Abfalleigenschaft bei der Unterstützung von VB.Jscript, und Sie müssen studieren, um zu fangen.
Es ist erwähnenswert, dass bei der Verwendung des ERR -Objekts beim Nächsten Fehler beim Fehler Lebenslauf hinzugefügt werden muss und die Ausnahme, die das Asperror -Objekt übergeben hat, geworfen wird.
Beim Verknüpfen einer Datenbank können Sie das Fehlerobjekt verwenden: Zähleigenschaft: Zum Zählen der Anzahl der Fehlersammlungen, Elementmethode: verwendet, um einen bestimmten Fehler anzugeben, ist die Syntax Fehler. ITEM (Nummer), wobei die Nummer eine Nummer ist. Da das Element die Standardmethode ist, entspricht die Schreibmethode (Nummer) der vorherigen. Unten ist ein Programm. Wird verwendet, um Fehlerobjekte zu zählen:
<%
Bei der nächsten Fehleraufnahme als nächstes
Setzen Sie conn = server.createObject (adodb.Connection)
Dim ich, your_databasepath: your_databasepath = Nr. Mdb
connStr = provider = microsoft.jet.oledb.4.0; data source = & server.mappath (your_databasepath) &
Conn.open Connstr
Wenn Conn.Erors.Count <> 0 dann
Antwort.Write konnte die Datenbank <hr/> nicht verknüpfen
für i = 0 an conn.Erors.count-1
response.write conn.Erors.item (i) & <hr>
Antwort.Write err.description
nächste
anders
response.write link -Datenbank erfolgreich
Ende wenn
conn.close
%>
Es gibt keinen Unterschied zwischen dem ERR -Objekt. Haben Sie das Vergleichsergebnis gesehen? Es ist so kalt, dass es einfach ist, das ERR -Objekt direkt zu verwenden.
Es wird im Allgemeinen empfohlen, das Asperror -Objekt während des Debuggens zu verwenden, was bedeutet, dass der Ein -Fehler -Lebenslauf in der nächsten Zeile REM standardmäßig mit Asperror geworfen wird. Während des offiziellen Betriebs können Sie das ERR -Objekt verwenden, um etwas zu tun, es sei denn, Sie haben spezielle Anforderungen.
Anteil: Nützliche Sammlung von Funktionen in der ASP -Entwicklung (2) Eine Sammlung nützlicher Funktionen in der ASP -Entwicklung ist sehr nützlich. Bitte behalten Sie sie! '*************************************** 'Filtering hyperlink'********************************* Function checkURL(ByVal ChkStr) Dim str:str=ChkStr str=Trim(str) If IsNull(str) Then chec