【问题标题】:Keeping track of internal applications using ASP.NET Web APIs (Logging)使用 ASP.NET Web API 跟踪内部应用程序(日志记录)
【发布时间】:2018-03-01 12:35:45
【问题描述】:

我目前有很多 Web API 被各​​种应用程序使用。所有 API 都使用带有 4.6 .NET 框架的 ASP.NET Web API 2。我希望能够跟踪使用特定 API 的所有不同应用程序。

例子:

假设我有以下 API:

  • Employees API - 获取所有员工

我有以下调用 Employees API

的应用程序
  • 员工管理系统 - 位于/intranet/employee/add
  • 请假申请表 - 位于/intranet/timeoff.aspx

员工管理系统使用 C# 代码中的 HttpClient 调用 Employees API

休假申请表使用 JavaScript 中的 ajax 调用调用 Employees API


我想记录所有使用 Web API 的应用程序,最好记录它们正在调用的操作。实现这一目标的最佳方法是什么?

有没有办法获取 Callers URI?

从 Web API 是否可以知道 /intranet/timeoff.aspx 正在调用 Employee API 上的添加员工操作

【问题讨论】:

  • 我猜你正在寻找类似的东西arcware.net/logging-web-api-requests
  • 你给你任何排序或授权吗?像在标头中发送令牌之类的东西还是api完全打开?
  • @Fran 完全开放。一些 API 确实有授权,但大多数没有。

标签: c# asp.net asp.net-mvc asp.net-web-api


【解决方案1】:

我相信你有几个选择。

  1. 为来自应用程序的每个请求添加一个标头值以标识应用程序。

  2. 将标识应用程序的声明添加到安全令牌 (假设您正在保护请求)。

  3. 为每个请求添加请求应用程序的查询参数。

【讨论】:

    【解决方案2】:

    如果您可以控制调用您的 API 的应用程序,那么Michael_B 提供了一些很好的建议。如果没有,那么您可能需要考虑一些参考信息,例如 IP 地址 - 请参阅How to get IpAddress and UserAgent in ASP.NET Web API get methods。但是,即使那样,该值也可能不是客户端 IP,而是介于它和您的 API 之间的东西。

    尽管如此,由于您使用的是 Web API,您可能会考虑首先通过 DelegatingHandler 运行所有请求,然后将调用者信息等写入日志,然后让请求继续发送到正确的控制器.见http://arcware.net/logging-web-api-requests/

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多