我使用API客户端NuGet包发送HTTP请求并接收来自第三方API的响应。如何捕获和记录该NuGet包执行的HTTP请求和响应,以便将它们存储在日志数据库中?
示例:
var client = new ThirdPartyPackage.Client();
var todos = client.fetchTodos(); // how to log the HTTP request/response executed by the third party package?
答案 0 :(得分:-1)
IIS已经为您执行了日志记录。您可以在文件夹中找到日志:%SystemDrive%\ inetpub \ logs \ LogFiles
您可以根据需要自定义日志架构。你不需要一个Nuget包。或者如果您愿意,可以使用Nlog
答案 1 :(得分:-1)
您正在使用的库似乎在底层使用WebRequest
来执行其HTTP请求。因此,您应该能够设置WebRequest.DefaultWebProxy
属性来拦截请求。
https://msdn.microsoft.com/en-us/library/system.net.webrequest.defaultwebproxy(v=vs.110).aspx
请注意,这可能是很多工作,具体取决于您希望捕获的有关请求的确切信息,因此,如果我是您,我会认真考虑分叉库并更改其代码以提供一些用于记录的钩子。
DefaultWebProxy
方法的好处是,一旦它完成并且工作它不需要太多维护,否定的是它可能在前面进行大量的工作并且正在添加另一个失败点。分支库的好处是它最初应该更快实现,但可能需要更多持续维护,因为您可能需要将对原始SDK的任何更改手动合并到fork中。鉴于您使用的套餐在2年内几乎没有变化,但这似乎是可接受的风险。
此外,如果你进入fork路线,那么你总是可以向原始存储库维护者发送一个pull请求,这有望意味着你的代码最终会在Nuget包中结束,然后你可以恢复到Nuget而不是你的fork