Отслеживание внутренних приложений с помощью веб-API ASP.NET (ведение журнала)

В настоящее время у меня есть много веб-API, которые используются различными приложениями. Все API используют веб-API ASP.NET 2 с платформой 4.6 .NET. Я хочу иметь возможность отслеживать все различные приложения, использующие определенный API.

Пример:

Допустим, у меня есть следующий API:

  • Employees API — получает всех сотрудников

И у меня есть следующие приложения, которые вызывают Employees API.

  • Система управления сотрудниками – расположена по адресу /intranet/employee/add.
  • Форма запроса на отгул — находится по адресу /intranet/timeoff.aspx.

Система управления сотрудниками вызывает Employees API с помощью HttpClient в коде C#.

Форма запроса на отгул вызывает Employees API с помощью вызова ajax в JavaScript.


Я хочу вести журнал всех приложений, использующих веб-API, и, желательно, какие действия они вызывают. Каков наилучший способ добиться этого?

Есть ли способ получить URI вызывающего абонента?

Из веб-API можно узнать, что /intranet/timeoff.aspx вызывает действие добавления сотрудника в Employee API.


person Aaron    schedule 16.12.2016    source источник


Ответы (2)


Я полагаю, у вас есть несколько вариантов.

  1. Добавьте значение заголовка для идентификации приложения к каждому запросу от apps.

  2. Добавьте утверждение, идентифицирующее приложение, в маркер безопасности (при условии, что вы защищаете запросы).

  3. Добавьте параметр запроса для запрашивающего приложения в каждый запрос.

person Kaizen Programmer    schedule 16.12.2016

Если у вас есть контроль над приложениями, которые вызывают ваш API, то Michael_B предлагает несколько хороших предложений. Если нет, вам может потребоваться рассмотреть некоторую справочную информацию, такую ​​​​как IP-адрес - см. -web-api-get-methods">Как получить IpAddress и UserAgent в методах получения веб-API ASP.NET. Однако даже в этом случае это значение может быть не IP-адресом клиента, а чем-то средним между ним и вашим API.

Тем не менее, поскольку вы используете Web API, вы можете рассмотреть возможность выполнения всех запросов через DelegatingHandler сначала запишите информацию о вызывающем абоненте и т. д. в журнал оттуда, а затем позвольте запросу перейти к соответствующему контроллеру. См. http://arcware.net/logging-web-api-requests/.

person Stinky Towel    schedule 16.12.2016