Предыстория: мы имели дело с балансировщиком нагрузки, который не поддерживал HTTP/1. * запросы. Не проблема, мы попытались перевести HttpClient.DefaultRequestVersion на HTTP/2.0 с HttpClient.DefaultVersionPolicy, установленным на HttpVersionPolicy.RequestVersionOrLower, ожидая, что этого будет достаточно для HttpClient< /code>, чтобы начать отправку запросов HTTP/2.0 (и вернуться к HTTP/1.1, когда это было невозможно).
Однако мы быстро заметили, что эти значения по умолчанию для HttpClient настраиваются во всем приложении для HttpClient. > похоже, не оказало никакого эффекта (очевидно, есть аргументы в пользу того, почему можно не захотеть этого делать, однако, пожалуйста, смотрите дальше xD).
В документации dotnet для HttpClient.DefaultRequestVersion, есть раздел примечаний, в котором говорится:
Свойство DefaultRequestVersion не применяется к SendAsync
метод. Параметр HttpRequestMessage передается в качестве аргумента
Код: Выделить всё
SendAsyncМетод , используемой для запроса.
Кто-нибудь может пролить свет какой-то свет вокруг этого дизайнерского решения, оно кажется немного нелогичным? Это чисто SoC для dotnets (то, что отправляет сообщение, и само сообщение — это две разные проблемы, но тогда зачем предлагать настройки HttpClient..., если это так)
Подробнее здесь: https://stackoverflow.com/questions/792 ... -the-httpc
Мобильная версия