【问题标题】:ASP.NET Web API v2 and logging all errors/exceptions with ELMAHASP.NET Web API v2 并使用 ELMAH 记录所有错误/异常
【发布时间】:2015-08-03 04:56:15
【问题描述】:

尽管我花了几个小时在网上搜索,但我找不到解决这个问题的方法。作为 Web API v2 的新手,对于有更多经验的人来说,这可能是一个非常简单的问题。

我有一个干净的 MVC 项目更新为使用 Web API v2。我已经通过 Nuget 安装了许多 ELMAH 包。

在 MVC 中使用普通 Home 控制器时,如果我放置了无效页面,例如/Home/test 它将生成 404。Elmah 反过来捕获了这一点,我仅从日志中知道哪些页面可能被破坏等。

我想将此级别的日志记录转移到 API 控制器。日志记录确实有效,但我必须向控制器抛出异常才能在 Elmah 中记录一些内容。

我猜像 404/415 错误之类的东西被归类为“已处理”异常,但我只记录了未处理的异常。

无论如何,我想要记录 API 控制器上的任何错误。通过这种方式,我可以监控 API 的使用情况以及调用客户端导致的任何错误。错误可能是 404s、不支持的数据类型的 415 等等。这样,如果来自客户端的发布数据有任何问题,我可以很容易地看到本应传回的响应。

提前致谢!

WebApi.config:

Public static void Register(HttpConfiguration config)
{
    ...
       config.filters.add(new Elmah.Contrib.WebApi.ElmahHandleErrorApiAttribute());
}

过滤器配置:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
   filters.Add(new Elmah.Contrib.Mvc.ElmahHandleErrorAttribute());
   filters.Add(new HandleErrorAttribute();
}

【问题讨论】:

  • Follow stackoverflow.com/help/how-to-ask 你能用有问题的代码更新你的帖子吗?
  • 你好米兰,我已经更新以显示我在两个配置文件中使用的代码。
  • 只是一个更新,说我已经找到了我想要的东西,尽管不是来自 Elmah。事后看来,我现在可能通过使用 Web API 附带的内置跟踪框架来做正确的事情。我只是要让 elmah 去处理未处理的异常。对于其他想要做同样的事情的人,请查看这篇文章asp.net/web-api/overview/testing-and-debugging/…

标签: asp.net asp.net-web-api elmah elmah.mvc


【解决方案1】:

事实证明,404 错误在 Web API 中的处理方式略有不同,它们绕过通常的请求管道,并在 ELMAH 了解它们之前直接发送到浏览器。

因此,为了使用 ELMAH 记录 404 错误,您需要在 WebApiConfig 中添加一个“catch all”路由作为最后一个路由来手动记录错误。

我刚刚更新了帖子并包含了一个可行的示例解决方案 - http://jasonwatmore.com/post/2014/05/03/Getting-ELMAH-to-catch-ALL-unhandled-exceptions-in-Web-API-21.aspx

【讨论】:

    【解决方案2】:

    您还需要使用 Web API 注册异常记录器。看看这篇很棒的帖子:http://www.jasonwatmore.com/post/2014/05/03/Getting-ELMAH-to-catch-ALL-unhandled-exceptions-in-Web-API-21.aspx

    【讨论】:

    • 您好 Thomas,感谢您的回复。我尝试从您提供的帖子中添加该行项目,不幸的是它似乎没有任何影响,所以不确定我错过了什么:o/
    • 如果你保留它但删除句柄错误属性会发生什么?
    • 唉,没什么,当时试过了,但没有喜悦:o(
    • 既然项目很干净,能不能放到github上?
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多