Fiddler 未从 .Net Core 捕获流量

Mik*_*ore 9 c# https fiddler .net-core

我有一个控制台应用程序,它通过 HTTP/HTTPS 调用许多 3rd 方服务,该应用程序最初是为在 .Net Framework 下运行而编写的。Fiddler 与该版本的应用程序配合良好,可捕获所有 HTTP 和 HTTPS 流量。

我将应用程序移植到 .net Core 2.1,现在 Fiddler 不会从应用程序捕获任何 HTTP/HTTPS 流量。

关于为什么 Fiddler (v5.0) 无法从 .Net Core 应用程序捕获流量的任何建议?

Jps*_*psy 10

在我的办公环境中,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
           }
        );
Run Code Online (Sandbox Code Playgroud)

这可靠地将来自 Core 的所有请求通过 Fiddler 进行隧道传输。


bar*_*njs 5

在 .NET Core 2.1 中,默认提供程序从 WinHttpHandler 更改为新的 SocketsHttpHandler,完全基于 .NET 网络堆栈构建。

https://github.com/dotnet/corefx/issues/28603表示 Fiddler 预计可以工作,因此请确认您拥有 2.1 的最新更新,如果仍然无法正常工作,请在 github 上向 corefx 报告问题。


And*_*ver 5

小补充。如果将HttpClientFactory与 DI 一起使用,则可以这样设置代理

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