我正在开发 SQL Server 2008 上的 ASP.NET 应用程序。有时用户会出于各种原因在站点上生成错误,如果我能够获取生成错误的原始请求以便我可以重播或制作它,那将非常有用测试的一部分。
我熟悉事件查看器来查找错误,但我发现摘要没有给我足够的信息,例如“他们尝试使用的特殊字符是什么”?
这可能吗?我怎么知道?
我正在开发 SQL Server 2008 上的 ASP.NET 应用程序。有时用户会出于各种原因在站点上生成错误,如果我能够获取生成错误的原始请求以便我可以重播或制作它,那将非常有用测试的一部分。
我熟悉事件查看器来查找错误,但我发现摘要没有给我足够的信息,例如“他们尝试使用的特殊字符是什么”?
这可能吗?我怎么知道?
您可以使用 Elmah 错误记录。它是免费的并且能够很好地处理错误并且它显示了很多有用的信息。您可以将其配置为在发生错误时发送电子邮件。
据我所知,没有默认的方法来做到这一点。您将必须向您的应用程序添加额外的日志记录,这将允许您捕获此信息并将其存储在数据库中或通过电子邮件将其发送给管理员。
尝试修改 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;
}