web-dev-qa-db-ja.com

.NetのHttpClientでHTTP 2を使用する

HTTP 2.0経由でデータをリクエストしようとしています。 .Net Core 2.2のHttpClientを使用しています。私はWindows 10を使用していますが、製品版のLinuxで実行します。問題は、応答のバージョンが常に「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);
    }
}
6
Robert M

Http/2プロトコルを使用したいが、 プロトコルプロパティ を設定しなかった。そうしてください。使用しているオペレーティングシステムで可能かどうかを確認しましたか。 .NET Core サポートしていません これは、たとえばMac OSの場合はまだです。また、オプション変数 ConfigureKestrelを呼び出す場合 を使用して、ここで説明するように必要なプロパティを設定してください。論理的に、httpバージョンを設定するために この代替方法 を試すこともできます。

Curl呼び出しを行うことで、状況に応じて http/2呼び出し が可能かどうかを確認できます。

さらに、.NET Core(使用する)の元のHttpClientにも問題があります。 HttpClientFactory を使用してください。

1
Daan