【问题标题】:ASP.NET MVC 4 Web Api: Diagnostic featuresASP.NET MVC 4 Web Api:诊断功能
【发布时间】:2012-06-21 13:27:58
【问题描述】:

我正在寻找在 ASP.NET MVC 4 Web Api 中启用登录/跟踪的功能。 在 WCF 中,您可以激活日志记录和 WCF 写入它正在执行的操作。然后,我可以打开转储并搜索错误。

我不想跟踪我的 web api,而是记录框架正在执行的操作。 如果我使用消息处理程序跟踪/记录 Web api,如果在我的实施之前发生错误,我将得不到任何信息。

【问题讨论】:

    标签: logging asp.net-mvc-4 asp.net-web-api diagnostics


    【解决方案1】:

    http://www.asp.net/web-api/overview/testing-and-debugging/tracing-in-aspnet-web-api

    如果您提供 ITraceWriter 实现(可以像调用 System.Diagnostics.Trace 一样简单),Web API 框架将跟踪它所做的事情。

    • 迈克

    【讨论】:

      【解决方案2】:

      我推荐两件事。

      1) 为了获得有关抛出异常的完整详细信息,我将错误策略设置为始终。这应该会从您的代码中返回更详细的异常消息。

        GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
      

      我认为这仅适用于 RC。

      2) 然后我还建议连接一个消息处理程序,您可以使用它来获取额外的请求/响应信息。消息处理程序将在新请求进入时和最终响应返回之前运行。网上有很多这样的例子。 WebAPIContrib 有一个 GitHub repo 你可以看看 example

      3)如果您想监控其他服务器事件,您可能需要考虑使用asp.net health monitoring,当然前提是您托管在asp.net 中。它可以让您进行各种审计和监控服务器错误。

      【讨论】:

      • 嗨,我不想使用消息处理程序,因为它们在这种情况下不起作用。我需要一个框架正在做的日志。例如,如果服务器启动时发生错误,则不会调用消息处理程序。
      • 服务器错误不会特定于 web api。你看过健康监测吗?我可以添加一些链接到我的答案
      • 您应该永远在生产环境中使用 IncludeErrorDetailPolicy.Always 这是一个信息泄露漏洞:异常包含可用于寻找方法的详细信息破解你的系统(见owasp.org/index.php/Information_Leak_(information_disclosure)
      猜你喜欢
      • 2012-10-11
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 2016-06-23
      • 2012-09-15
      相关资源
      最近更新 更多