关于艾玛的一些问题

时间:2012-12-31 03:08:26

标签: asp.net-mvc model-view-controller elmah

我目前正与Elmah合作并且非常喜欢它。我有几个问题:

当我记录异常时,我是否可以将自定义数据添加到异常日志记录中,该异常日志记录将被异常记录?

当我的网站上发生错误时,我希望能够将用户重定向到错误页面,并为其包含一个唯一的标识符,该异常标识符会被异常记录,但也显示在屏幕上,因此我可以用户报告时跟踪它。这可能吗?

是否有任何指示可以告诉我我可以设置磁盘异常的记录?

2 个答案:

答案 0 :(得分:2)

您可以添加任何异常的数据集合。您可以在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>

答案 1 :(得分:0)

您可以使用请求/响应模式。如果用户获得异常集响应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的网址。 http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs