2016-12-16 50 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/