我们可以在HttpClient中使用至少2个处理程序来处理由Net Framework 4.6.1+编写的应用程序,即:
下一个问题没有比较它们的文章:
有没有人可以分享您的使用体验 WinHttpHandler ?
答案 0 :(得分:0)
Karel Zikmund 回答了我的问题,您可以通过下一个url
查看从.NET Core 2.1开始, HttpClientHandler 默认使用 SocketsHttpHandler -套接字上的新C#实现。
它的关键价值是跨平台的一致性以及对性能的关注(尤其是针对Linux / Mac上的 CurlHandler )。
WinHttpHandler 是winhttp OS组件的包装。如果您需要HTTP / 2,则它是当前唯一的选项,因为 SocketsHttpHandler 还不支持HTTP / 2(请参见#23134)。
DNS更改在两者上的行为相同,但是,您可以通过 SocketsHttpHandler.PooledConnectionLifetime 对其进行一些调整。
不支持DNS TTL-请参见#24257和#11224。解决方法是定期回收处理程序。您还可以使用更高级别的包装器HttpClientFactory来帮您实现这一目的(至少是出于动机)。