Ich habe eine ASP.net Web API auf IIS 10 gehostet (Windows Server 2016). Wenn ich eine GET
Anforderung an diesem von einem Microsoft Edge-Browser machen, sehe ich, dass HTTP 2.0
in IIS verwendet wird protokolliertWie man den .net HttpClient http 2,0 verwenden?
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
Wenn jedoch eine GET
Anfrage, wie unten durch ein .net 4.6 client gemacht wird,
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));
}
}
ich sehe das folgende HTTP 1.1
Protokoll in den Serverprotokollen
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
Wie kann ich die .net cl machen Verwenden Sie HTTP/2.0?
Das Repository, mit dem Sie verbunden sind, scheint nur für die Serverkomponenten zu sein, nicht für den Client (es gibt einen Testclient, der TcpClient verwendet, aber keinen echten HttpClient) –
@RacilHilan Vielen Dank für Ihre Antwort. "Sie könnten Ihr eigenes HttpMessageHandler-Objekt implementieren, das HTTP/2" in Bezug auf Ihren Kommentar implementiert. Könntest du mehr ausarbeiten? –
@RashminJaviya Sie können den Code aus dem Quellcode mithilfe des Links in meiner Antwort kopieren und zu Ihrem Projekt hinzufügen. Denken Sie daran, dass der Code aus der Entwicklung stammt. Daher müssen Sie alle Tests und möglichen Korrekturen selbst durchführen. Natürlich ist das keine einfache Aufgabe, aber es war der einzige Weg zurück, als diese Frage gestellt wurde. Jetzt haben sich die Dinge geändert. Siehe Oliver's Antwort unten, wenn es Ihren Bedürfnissen entspricht. –