我目前正在与 Elmah 合作,非常喜欢它。不过,我有几个问题:
当我记录异常时,有什么方法可以将自定义数据添加到异常记录中,该异常记录将与异常一起记录?
当我的网站上发生错误时,我希望能够将用户重定向到错误页面,并让它包含一个唯一标识符,该标识符与异常一起记录但也显示在屏幕上,以便我可以追踪它当用户报告它时。这可能吗?
是否有任何说明可以告诉我我可以将异常记录设置到磁盘?
我目前正在与 Elmah 合作,非常喜欢它。不过,我有几个问题:
当我记录异常时,有什么方法可以将自定义数据添加到异常记录中,该异常记录将与异常一起记录?
当我的网站上发生错误时,我希望能够将用户重定向到错误页面,并让它包含一个唯一标识符,该标识符与异常一起记录但也显示在屏幕上,以便我可以追踪它当用户报告它时。这可能吗?
是否有任何说明可以告诉我我可以将异常记录设置到磁盘?
您可以将任何异常添加到数据集合中。您可以在 try catch 块、Global.asax 中的 Application_Error 处理程序或已注册的 HandleErrorAttribute 中执行此操作。
exception.Data.Add("key", "additional info");
您可以使用 Elmah 的配置登录到文件。确保您已为此位置设置用户权限。
<elmah>
<security allowRemoteAccess="yes" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ErrorLogs" />
</elmah>
您可以使用请求/响应模式。如果用户得到异常设置响应为 false,则使用 Elmah 记录错误并将具有唯一错误 ID 的错误消息返回给最终用户。您可以在下面看到代码示例:
public class Response
{
public string Message { get; set; }
public bool Success { get; set; }
}
public class ErrorLog
{
public static string GenerateErrorRefMessageAndLog(Exception exception)
{
string uniqueId = Guid.NewGuid().ToString();
Exception newEx = new Exception(uniqueId, exception);
Elmah.ErrorSignal.FromCurrentContext().Raise(newEx);
return String.Format("If you wish to contact us please quote reference '{0}'", uniqueId);
}
}
public class YourClass
{
var response = new Response();
try
{
//Bussines logic here
response.Success = true;
}
catch (Exception ex)
{
// Shield Exceptions
response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex);
response.Success = false;
}
return response;
}
这是如何配置 Elmah 的 url。 http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs