日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NET问答: 如何让 HttpClient 支持 Http 2.0 协议?

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NET问答: 如何让 HttpClient 支持 Http 2.0 协议? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

咨詢區

  • Justin Lessard

我的一個項目需要支持 Http 2.0 進行數據的收發,目前用的項目版本是 .NET Core 2.2,我選型了 HttpClient,但是我發現一個問題,在生產環境中的程序返回的 response 版本一直都是 Http 1.1,請問大家我該如何正確配置?

參考代碼:

using?(var?client?=?new?HttpClient()) {using?(var?request?=?new?HttpRequestMessage(new?HttpMethod("GET"),"https://duckduckgo.com/")){request.Version?=?new?Version(2,?0);var?response?=?await?client.SendAsync(request);Console.WriteLine(response.Version);} }

回答區

  • Panagiotis Kanavos

你應該用的是 .Net Core 3 之前的版本,因為在 3.0 中已經提供了 Http 2 的支持,下面的代碼將會解決你的問題,并輸出 2.0.

class?Program{static?void?Main(string[]?args){Test();Console.ReadLine();}static?async?void?Test(){var?client?=?new?HttpClient();var?req?=?new?HttpRequestMessage(HttpMethod.Get,?"https://http2.akamai.com/demo"){Version?=?new?Version(2,?0)};var?x?=?await?client.SendAsync(req);var?version?=?x.Version;Console.WriteLine(version);}}
  • undrivendev

在 .NET 2.1 中,HttpClient 底層采用的是 SocketsHttpClientHandler, 這種新一代的 handler 是不支持 Http/2 的,所以這是你一直看不到 1.1 ?的原因。

另外現在都不推薦直接用 HttpClient,最佳模式是改成 HttpClientFactory,可以參考官方的使用案例:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-5.0

下面是一個將 HttpClient 注冊為 typeClient 并且配置成 http/2 的例子。

public?void?ConfigureServices(IServiceCollection?services) { ...services.AddHttpClient<ExampleService>().ConfigureHttpClient((client)?=>{client.DefaultRequestVersion?=?new?Version(2,?0);}); ... }

點評區

其實網絡上有很多關于描述 HttpClient 的弊端,比如無法有效的感知 url 的 DNS 變更,network 上的 4min 問題,大家還是有必要明白這些問題的解決方案 ?HttpClientFactory,從這一系列例子上,.NET Core 3 開始已經是一本相對功能齊全,穩定的版本了,項目能升級到3.0的盡快升級。

總結

以上是生活随笔為你收集整理的NET问答: 如何让 HttpClient 支持 Http 2.0 协议?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。