我目前有很多Web API正在被各种应用程序使用。所有API都使用ASP.NET Web API 2和4.6 .NET框架。我希望能够跟踪使用特定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上的添加员工操作
我相信你有几个选择。
如果您可以控制调用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/