如何获取导致ASP .NET错误的请求数据

时间:2013-07-17 11:36:53

标签: .net sql-server error-handling

我正在研究SQL Server 2008上的ASP.NET应用程序。有时用户会因各种原因在网站上生成错误,如果我能够获得生成错误的原始请求以便我可以重放它,那将非常有用或者让它成为考试的一部分。

我熟悉事件查看器以查找错误但我发现摘要没有给我足够的信息,例如“他们试图使用的特殊字符是什么”?

这可能吗?我怎么知道?

2 个答案:

答案 0 :(得分:7)

您可以使用Elmah错误记录。它是免费的,能够很好地处理错误,它显示了很多有用的信息。您可以将其配置为在发生错误时发送电子邮件。

URL: https://code.google.com/p/elmah/

答案 1 :(得分:5)

据我所知,没有默认的方法可以做到这一点。您必须向应用程序添加其他日志记录,以便您可以捕获此信息并将其存储在数据库中,或通过电子邮件将其发送给管理员。

尝试修改Global.asax

中的Application_Error方法

以下是如何在那里收集一些信息,您可以进一步修改以满足您的需求

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs
    // At this point we have information about the error
    HttpContext ctx = HttpContext.Current;

    Exception exception = ctx.Server.GetLastError();

    //Error message that will be emailed
    string errorInfo =
        "<br><b>Time:</b> " + DateTime.Now.ToString() +
        "<br><b>Offending URL:</b> " + ctx.Request.Url.ToString() +
        "<br><b>Referring URL:</b> " + ctx.Request.UrlReferrer.ToString() +
        "<br><br><b>Query String:</b> " + ctx.Request.QueryString.ToString() +
        "<br><br><b>IP Address:</b> " + ctx.Request.UserHostAddress +
        "<br><br><b>Form:</b> " + ctx.Request.Form.ToString() +
        "<br><br><b>Source:</b> " + exception.Source +
        "<br><br><b>Message:</b> " + exception.Message +
        "<br><br><b>Stack trace:</b> " + exception.StackTrace;
}