2016-11-21 52 views
0

我使用API​​客戶端NuGet包發送HTTP請求並接收來自第三方API的響應。如何捕獲和記錄由NuGet包執行的HTTP請求和響應,以便將它們存儲在日誌數據庫中?由第三方NuGet包執行的日誌HTTP請求和響應

例子:

var client = new ThirdPartyPackage.Client(); 
var todos = client.fetchTodos(); // how to log the HTTP request/response executed by the third party package? 

具體例子:https://github.com/exactonline/exactonline-api-dotnet-client/blob/master/test/ExactOnline.Client.Sdk.IntegrationTests/ExactOnlineQueryTests.cs#L21

+0

請提供使用此包發送請求的示例代碼 –

+0

我猜測完全取決於您的API /包。正如易卜拉欣已經提到的,在這種情況下[mcve]將是一個好主意。 –

+0

它如何取決於API /包?我無法更改NuGet包中的代碼,所以我問是否有可能圍繞它捕獲HTTP流量的代碼。 – Korneel

回答

-1

IIS已經做記錄爲您服務。您可以在文件夾中找到日誌:%SystemDrive%\ inetpub \ logs \ LogFiles

您可以根據需要自定義日誌模式。你不需要這個Nuget包。或者如果你願意,你可以使用Nlog

+1

API是第三方,有可能海報無法訪問服務器或其日誌文件。 –

-1

你正在使用的庫似乎使用WebRequest在引擎蓋下執行其HTTP請求。因此,您應該能夠設置WebRequest.DefaultWebProxy屬性來攔截請求。

https://msdn.microsoft.com/en-us/library/system.net.webrequest.defaultwebproxy(v=vs.110).aspx

(源代碼參考:https://github.com/exactonline/exactonline-api-dotnet-client/blob/master/src/ExactOnline.Client.Sdk/Helpers/ApiConnector.cs#L167

被警告然而,這是一個潛在的很大,這取決於你希望到底有多少信息,以獲取有關請求的工作,所以如果我是你,我認真考慮分叉庫並對其代碼進行修改,以便爲日誌記錄提供一些鉤子。

DefaultWebProxy方法的好處是,一旦啓動並運行,它不需要太多的維護,不利之處在於它可能在事前處理很多工作並且增加了另一個故障點。分叉庫的好處在於,它最初應該更快實施,但可能需要更多的持續維護,因爲您可能需要將對原始SDK的任何更改手動合併到叉中。鑑於你使用的軟件包在2年內幾乎沒有變化,但這似乎是一個可接受的風險。

另外,如果你去了fork路徑,那麼你總是可以發送原始的repository維護者一個pull請求,希望這意味着你的代碼最終會在Nuget包中結束,然後你可以恢復到Nuget而不是你的叉子。

+0

向下投票關心評論? –