2011-08-08 47 views
8

Estoy tratando de diagnosticar un problema con un sitio que parece estar arrojando un error en algún lugar del código. De los registros de errores parece ser un error de sintaxis SQL causado por mala concatenación de una consulta SQL con código incorrecto. Mi problema es que no puedo reproducir el error, pero los clientes aún lo están obteniendo y podría deberse a una serie de consultas. Entonces mi plan es crear mi propia página de 500 errores para capturar el resultado.ASP clásico - Detectando 500 errores

Quiero que la página capture todos los datos de la sesión, todos los datos POST y GET (lo cual puedo hacer) pero también quiero obtener información detallada sobre el error. Más o menos lo que se mostraría en la página cuando el sitio permita que se muestren los errores. Con la pequeña flecha que especifica la línea.

¿Hay alguna forma de detectar el error en la página de error 500 personalizada?

Gracias de antemano

subvención

Respuesta

14

Puede obtener buena, pero no excelente información de ASP cuando se tiene un error.

Pero puede define a custom 500 error code page en ASP land que puede darle un poco más de información cuando se bloquea su programa. Aquí hay un código de muestra que generará un mensaje de error bastante decente sobre su error.

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 

Editar En IIS7 GetLastError no parece tener ninguna información disponible.
Puede solucionar el problema creando un 500.100 y apunte esto a su secuencia de comandos.
YMMV, revise estas URL para obtener más información http://forums.iis.net/t/1150502.aspx y http://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/

+0

¡La edición de Eduardo Molteni es una gran solución! –