我目前有很多Web API正被各种应用程序使用。所有API都使用ASP.NET Web API 2和4.6 .NET框架。我希望能够跟踪使用特定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上的添加员工操作
答案 0 :(得分:1)
我相信你有几个选择。
添加标头值以标识应用程序对每个请求的应用程序。
将标识应用程序的声明添加到安全令牌 (假设您正在保护请求)。
为每个请求添加请求应用程序的查询参数。
答案 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/