我正在研究SQL Server 2008上的ASP.NET应用程序。有时用户会因各种原因在网站上生成错误,如果我能够获得生成错误的原始请求以便我可以重放它,那将非常有用或者让它成为考试的一部分。
我熟悉事件查看器以查找错误但我发现摘要没有给我足够的信息,例如“他们试图使用的特殊字符是什么”?
这可能吗?我怎么知道?
答案 0 :(得分:7)
您可以使用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;
}