ELMAH在异常数据字典中显示数据

Rob*_*Rob 11 elmah

使用ELMAH(非常棒)时,可以查看已添加到异常中的额外信息.

例如

Exception ex = new Exception("New exception to use ErrorSignal functionality");
ex.Data.Add("ExtraInfo", "Here is some extra information i would like to be displayed.");
ErrorSignal.FromCurrentContext().Raise(ex);    
Run Code Online (Sandbox Code Playgroud)

当我从elmah.axd查看异常时,它似乎没有显示"ExtraInfo"键和值信息,只是异常字符串.

Mys*_*ter 20

我的解决方案是将信息添加到Server Variables集合中.

var context = HttpContext.Current;
context.Request.ServerVariables["ERROR_CALLING_WEBSERVICE_URI"] = uri;
Elmah.ErrorLog.GetDefault(context).Log(new Error(e, context))
Run Code Online (Sandbox Code Playgroud)

是的,我认为这是一个黑客.
对于少量的附加数据,请考虑按@Roma的建议封装错误.
但是,如果您有太多信息要放入"封装的错误消息",此方法尤其有用

  • 此方法在引发错误之前有效,但您也可以通过global.asax对`void ErrorLog_Filtering(object sender,Elmah.ExceptionFilterEventArgs e)`(在创建Error对象之前)和强制转换为e中的所有错误.上下文为HttpContext` (3认同)
  • 很好的答案,但这仅适用于 Web 应用程序内部,而不适用于应用程序域,因为您需要访问 HTTP 上下文。 (2认同)

小智 7

简单的方法是封装错误.外部错误将包含您自定义消息.

string msg = "my custom error message";

ErrorSignal.FromCurrentContext().Raise(
               new Elmah.ApplicationException(msg,ex));
Run Code Online (Sandbox Code Playgroud)


Ati*_*ziz 2

不,当前 1.x 版本无法查看额外信息。

  • Atif,我强烈建议添加此功能! (7认同)