web-dev-qa-db-fra.com

Utilisez HTTP 2 avec HttpClient dans .Net

J'essaie de demander des données via HTTP 2.0. J'utilise le HttpClient de .Net Core 2.2. Je suis sur Windows 10 mais je vais tourner sur Linux en production. Le problème est que la version de la réponse semble toujours être "1.1". Qu'est ce que je fais mal?

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

Vous souhaitez utiliser le protocole http/2 mais vous n'avez pas défini propriété de protocole . S'il-vous-plaît faites ainsi. Avez-vous vérifié si cela est possible sur le système d'exploitation que vous utilisez? .NET Core ne prend pas en charge ceci pour Mac OS pour le moment par exemple. Assurez-vous également de configurer les propriétés nécessaires comme décrit ici en utilisant la variable d'options lors de l'appel de ConfigureKestrel . Logiquement, vous pouvez également essayer de cette autre manière pour définir la version http.

En faisant un appel curl, vous pouvez vérifier si votre appel http/2 est possible dans votre situation.

En outre, il existe des problèmes avec le HttpClient d'origine dans .NET Core (que vous utilisez). Veuillez utiliser HttpClientFactory .

1
Daan