2009-08-17 11 views
0

Ich habe begonnen, ASPUnit Unit-Test meinen klassischen ASP-Code zu verwenden. Das ist alles gut und ich bin glücklich. Das einzige Problem ist die Fehlermeldung, die angezeigt wird, wenn ein Test einen Laufzeitfehler generiert. Zum Beispiel, wenn ich eine Variable nicht irgendwo in meiner Funktion definiert habe, bekomme ich die Fehlermeldung:Wann kann ich auf das ASPError-Objekt zugreifen?

 
Microsoft VBScript runtime error (500): Variable is undefined 

Was wäre nützlicher, wenn sie mir sagen, welche Datei/Zeile der Fehler aufgetreten ist auf. Ich weiß, dass ich diese Informationen vom ASPError-Objekt erhalten kann, das von der Server.GetLastError() und anderswo in meinem Projekt zurückgegeben wird Ich habe eine benutzerdefinierte 500-Fehlerseite, die diese Methode verwendet, um Abstürze automatisch an Fogbugz zu melden. Wenn ich versuche, auf Server.GetLastError irgendwo anders zuzugreifen, ist die zurückgegebene Information leer. Zum Beispiel Null vielmehr der folgende Code wird ausgegeben als die

<% 
Option Explicit 
On Error Resume Next 
aVariable = "hello" 
Dim errObj : Set errObj = Server.GetLastError() 
Response.Write errObj.Line 
%> 

Ist dies der richtige Weg für den Zugriff auf ASPError 4. erwartet oder ist es nur möglich auf benutzerdefinierte Fehlerseiten? Gibt es eine bessere Möglichkeit, Fehlermeldungen in ASPUnit zu erhalten?

Antwort

1

Nach meinem besten Wissen wird das ASPError-Objekt nicht gefüllt, bis Ihre aktuelle Seite die Verarbeitung abgeschlossen hat. Es sollte nur auf der 500-Fehler-Seite verwendet werden. Also Theorie ist, wenn Sie einen Fehler erhalten, wenn Sie Ihre 500-Seite eingerichtet haben, dann wird IIS eine interne Weiterleitung zu dieser Seite durchführen, damit Sie den Fehler mindestens aufzeichnen können. Dann und nur dann ist das ASPError-Objekt verfügbar. Ich hatte verrückte Ideen, eine xmlhttprequest zu verwenden, um zu versuchen, die Seite zu greifen, aber das ist einfach nicht die Art, wie es funktioniert.

Kurz gesagt, es gibt nicht viel, was Sie tun können, um diese Fehlermeldung Details zu erhalten, die Sie wollen.

Mit der JScript-Server-Seite können Sie try catch's verwenden, die Ihnen Zugriff auf ein Ausnahme-Objekt geben, aber selbst das ist nicht gut für Sie, keine Zeilennummern oder so. Müll.

+0

Boo. Genau davor hatte ich Angst. Danke, dass Sie sich die Zeit genommen haben, zu antworten. – jammus

Verwandte Themen