使用ASP.NET Web API跟踪内部应用程序(日志记录)

时间:2016-12-16 20:35:08

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

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

示例:

假设我有以下API:

  • 员工API - 获取所有员工

我有以下应用程序调用 Employees API

  • 员工管理系统 - 位于/intranet/employee/add
  • 请假表格 - 位于/intranet/timeoff.aspx

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

Time Off Request Form 使用JavaScript中的ajax调用来调用 Employees API

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

有没有办法获得Callers URI?

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

2 个答案:

答案 0 :(得分:1)

我相信你有几个选择。

  1. 添加标头值以标识应用程序对每个请求的应用程序。

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

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

答案 1 :(得分:1)

如果您可以控制调用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/