在捕获MVC 3中正确的JSON格式的错误时,如何使用ELMAH记录错误

Ste*_*ven 3 json elmah asp.net-mvc-3

我有一个ASP.NET MVC 3应用程序,我正在进行AJAX调用并期待返回JSON结果.我正在使用ELMAH来记录错误.在测试时我遇到了意外错误.ELMAH记录了错误,但我的客户端脚本没有记录,因为现在结果不是正确的JSON.如果我处理控制器中的所有错误以返回正确的JSON结果,则ELMAH不会记录错误.我知道我可以专门调用ELMAH来记录错误,但我更喜欢我不必在其他任何地方这样做.

任何人都可以澄清处理这种情况的"正确"方法吗?

例如

    try
{
                //service.dosomethingwitherror();
    return new JsonResult { Data = new { result = true, message = "Success." } };
}
catch (Exception ex)
{
    return new JsonResult { Data = new { result = true, message = "Failed." } };
}
Run Code Online (Sandbox Code Playgroud)

因为我'处理'这个,所以ELMAH不会记录.如果我不处理这个,我的客户端将无法获得JSON ...

jru*_*ell 5

您可以使用ErrorSignal类手动记录.这将执行所有已配置的elmah操作(日志,邮件,推文等).

ErrorSignal.FromCurrentContext().Raise(new NotSupportedException());
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://code.google.com/p/elmah/wiki/DotNetSlackersArticle#Signaling_errors.

如果您真的不喜欢将该代码添加到控制器中,则无法捕获异常服务器端并在javascript中处理ajax错误事件.

  • 您可以创建一个继承`ElmahErrorAttribute`的`JsonElmahErrorAttribute`类,并用`new JsonResult {Data = new {result = true,message ="Failed."覆盖模型.}. (2认同)