2016-12-16 133 views
0

我目前有很多Web API正在被各种应用程序使用。所有的API都使用带有4.6 .NET框架的ASP.NET Web API 2。我希望能够跟踪使用特定API的所有不同应用程序。使用ASP.NET Web API跟踪内部应用程序(日志记录)

例子:

可以说我有以下API:

  • 员工API - 得到所有员工(S)

而且我有致电以下应用程序员工API

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

企业员工管理系统调用员工API在C#代码中使用的HttpClient。

休假请求表格致电员工API使用JavaScript中的ajax调用。


我想保留所有使用Web API的应用程序的日志,最好是他们正在调用什么操作。达到此目的的最佳方法是什么?

有没有办法获得来电者的URI?

从Web API,才有可能知道/intranet/timeoff.aspx正在呼吁员工API

+0

我想你正在寻找这样的东西http://arcware.net/logging-web-api-requests/ – Majid

+0

你api你有什么排序或授权?像在标题中发送令牌还是API完全打开? – Fran

+0

@Fran它是完全开放的。一些API确实拥有授权,但其中大部分都没有授权。 – Aaron

回答

1

我相信你有几个选项中添加员工的行动。

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

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

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

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/