我正在尝试像这样使用Elmah引发异常:
try
{
Foo();
}
catch (WebException ex)
{
var nex = new Exception("Foo failed", ex);
Elmah.ErrorSignal.FromCurrentContext().Raise(nex);
}
但是,Elmah记录的是内部异常ex
,而不是我的新包装异常nex
,即结果数据库记录具有:
Type = "System.Net.WebException"
,Message = "The remote server returned an error: (400) Bad Request."
而不是我所期望的:
Type = "System.Exception"
,Message = "Foo failed"
到底是怎么回事?
答案 0 :(得分:1)
ELMAH在例外列表(/elmah.axd
)上显示内部例外的类型。如果您单击错误消息旁边的“详细信息”链接,我很确定您会看到以下内容:
System.Exception: Foo failed ---> System.Net.WebException
我刚刚创建了一个测试项目,并验证了这是经验丰富的行为。
编辑:如评论中所述,在类型和消息字段中使用基本例外似乎是intended behavior。