У меня есть app.net web api, размещенный на IIS 10 (сервер Windows 2016). Когда я делаю GET
запрос на это из браузера Microsoft Edge, я вижу, что HTTP 2.0
используется в IIS журналыКак сделать .net HttpClient использовать http 2.0?
2015-09-20 21:57:59 100.76.48.17 GET /RestController/Native - 443 - 73.181.195.76 HTTP/2.0 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.135+Safari/537.36+Edge/12.10240 - 200 0 0 7299
Однако, когда GET
запрос был сделан через .net 4.6 client, как показано ниже,
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://myapp.cloudapp.net/");
HttpResponseMessage response = await client.GetAsync("RestController/Native");
if (response.IsSuccessStatusCode)
{
await response.Content.CopyToAsync(new MemoryStream(buffer));
}
}
я вижу следующий HTTP 1.1
журнал в журнале сервера
2015-09-20 20:57:41 100.76.48.17 GET /RestController/Native - 443 - 131.107.160.196 HTTP/1.1 - - 200 0 0 707
Как я могу сделать .net сл Использование HTTP/2.0?
Репо, с которым вы связаны, похоже, только для серверных компонентов, а не для клиента (существует тестовый клиент, который использует TcpClient, но не настоящий HttpClient) –
@RacilHilan Спасибо за ответ. «вы можете реализовать свой собственный объект HttpMessageHandler, который реализует HTTP/2» в отношении вашего комментария. не могли бы вы подробнее рассказать? –
@RashminJaviya Вы можете скопировать код из исходного кода, используя ссылку в моем ответе и добавить его в свой проект. Помните, что код от разработки, поэтому вам придется делать все тестирование и возможные исправления самостоятельно. Очевидно, что это непростая задача, но это был единственный путь назад, когда этот вопрос был задан. Теперь все изменилось. См. Ниже ответ Оливера, если он соответствует вашим потребностям. –