2011-08-08 15 views
8

Próbuję zdiagnozować problem z witryną, która wydaje się gdzieś zgłaszać błąd w kodzie. Z logów błędów wynika błąd składni SQL spowodowany przez złe połączenie zapytania SQL ze złym kodem. Mój problem polega na tym, że nie mogę odtworzyć błędu, ale klienci wciąż go otrzymują i może to być spowodowane wieloma pytaniami. Tak więc moim planem jest stworzenie własnej strony błędu o wartości 500, aby złapać wynik.Klasyczne ASP - Złapanie 500 błędów

Chcę pobrać stronę, aby przechwycić wszystkie dane sesji, wszystkie dane POST i GET (co mogę zrobić), ale chcę również złapać szczegółowe informacje o błędzie. Prawie co będzie wyświetlane na stronie, gdy witryna pozwala na wyświetlanie błędów. Za pomocą małej strzałki określającej linię.

Czy istnieje sposób na złapanie błędu na niestandardowej stronie błędu 500?

góry dzięki

Grant

Odpowiedz

14

można dostać dobre, ale nie wielkiego info od ASP, gdy masz błąd.

Ale możesz define a custom 500 error code page w ziemi ASP, która może dać ci trochę więcej informacji, gdy program się zawiesza. Oto przykładowy kod, który zbuduje całkiem przyzwoity komunikat o błędzie.

Set objASPError = Server.GetLastError 

    Dim strProblem 
    strProblem = "ASPCode: " & Server.HTMLEncode(objASPError.ASPCode) & vbCrLf 
    strProblem = strProblem & "Number: 0x" & Hex(objASPError.Number) & vbCrLf 
    strProblem = strProblem & "Source: [" & Server.HTMLEncode(objASPError.Source) & "]" & vbCrLf 
    strProblem = strProblem & "Category: " & Server.HTMLEncode(objASPError.Category) & vbCrLf 
    strProblem = strProblem & "File: " & Server.HTMLEncode(objASPError.File) & vbCrLf 
    strProblem = strProblem & "Line: " & CStr(objASPError.Line) & vbCrLf 
    strProblem = strProblem & "Column: " & CStr(objASPError.Column) & vbCrLf 
    strProblem = strProblem & "Description: " & Server.HTMLEncode(objASPError.Description) & vbCrLf 
    strProblem = strProblem & "ASP Description: " & Server.HTMLEncode(objASPError.ASPDescription) & vbCrLf 
    strProblem = strProblem & "Server Variables: " & vbCrLf & Server.HTMLEncode(Request.ServerVariables("ALL_HTTP")) & vbCrLf 
    strProblem = strProblem & "QueryString: " & Server.HTMLEncode(Request.QueryString) & vbCrLf 
    strProblem = strProblem & "URL: " & Server.HTMLEncode(Request.ServerVariables("URL")) & vbCrLf 
    strProblem = strProblem & "Content Type: " & Server.HTMLEncode(Request.ServerVariables("CONTENT_TYPE")) & vbCrLf 
    strProblem = strProblem & "Content Length: " & Server.HTMLEncode(Request.ServerVariables("CONTENT_LENGTH")) & vbCrLf 
    strProblem = strProblem & "Local Addr: " & Server.HTMLEncode(Request.ServerVariables("LOCAL_ADDR")) & vbCrLf 
    strProblem = strProblem & "Remote Addr: " & Server.HTMLEncode(Request.ServerVariables("LOCAL_ADDR")) & vbCrLf 
    strProblem = strProblem & "Time: " & Now & vbCrLf 

Edit Na IIS7 GetLastError nie wydaje się mieć wszelkie dostępne informacje.
Możesz obejść problem, tworząc plik 500.100 i wskazać go w swoim skrypcie.
YMMV, sprawdź te adresy URL, aby uzyskać więcej informacji http://forums.iis.net/t/1150502.aspx i http://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/

+0

Edycja z Eduardo Molteni to świetne rozwiązanie! –

Powiązane problemy