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

问题描述 投票:0回答:2

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

例:

假设我有以下API:

  • 员工API - 获得所有员工)

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

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

Employee Management System使用C#代码中的HttpClient调用Employees API。

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


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

有没有办法获得Callers URI?

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

c# asp.net asp.net-mvc asp.net-web-api
2个回答
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/

© www.soinside.com 2019 - 2024. All rights reserved.