簡體   English   中英

Fiddler 未從 .Net Core 捕獲流量

[英]Fiddler not capturing traffic from .Net Core

我有一個控制台應用程序,它通過最初編寫在 .Net Framework 下運行的 HTTP/HTTPS 調用許多 3rd 方服務。 Fiddler 適用於該版本的應用程序,捕獲所有 HTTP 和 HTTPS 流量。

我將應用程序移植到 .net Core 2.1,現在 Fiddler 不會從應用程序捕獲任何 HTTP/HTTPS 流量。

關於為什么 Fiddler (v5.0) 無法從 .Net Core 應用程序捕獲流量的任何建議?

在我的辦公環境中,Fiddler 仍然沒有攔截 .NET Core 2.2 針對外部資源發出的請求。 我想這是由於我們的本地代理設置。

我的解決方法是通過將 Fiddler 顯式定義為要由 HttpClient 類使用的代理來捕獲來自 .NET Core 2.2 的請求:

        var httpClient = new HttpClient(
           handler: new HttpClientHandler
           {
               // 8888 = Fiddler standard port
               Proxy = new WebProxy(new Uri("http://localhost:8888")),  
               UseProxy = true
           }
        );

這可靠地將來自 Core 的所有請求通過 Fiddler 進行隧道傳輸。

在 .NET Core 2.1 中,默認提供程序從 WinHttpHandler 更改為新的 SocketsHttpHandler,完全基於 .NET 網絡堆棧構建。

https://github.com/dotnet/corefx/issues/28603表示 Fiddler 預計可以工作,因此請確認您擁有 2.1 的最新更新,如果仍然無法正常工作,請在 github 上向 corefx 報告問題。

小補充。 如果將HttpClientFactory與 DI 一起使用,可以通過這種方式設置代理

services.AddHttpClient<ISomeService, SomeService>()
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler()
    {
        Proxy = new WebProxy(new Uri("http://localhost:8888")),
        UseProxy = true
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM