Ho un asp.net web ospitato su IIS 10 (Windows Server 2016). Quando faccio una richiesta GET
a questo da un browser Microsoft Edge, vedo che HTTP 2.0
viene utilizzato in IIS registraCome rendere .net HttpClient utilizzare 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
Tuttavia, quando una richiesta GET
avviene tramite un .net 4.6 client come sotto,
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));
}
}
vedo il HTTP 1.1
registro seguente nei log dei server
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
Come posso fare il .net cl ient usa HTTP/2.0?
Il repository a cui è collegato sembra essere solo per i componenti del server, non per il client (esiste un client di test, che utilizza TcpClient, ma non un vero HttpClient) –
@RacilHilan Grazie per la risposta. "potresti implementare il tuo oggetto HttpMessageHandler che implementa HTTP/2" riguardo questo tuo commento. potresti approfondire di più? –
@RashminJaviya Puoi copiare il codice dal loro codice sorgente usando il link nella mia risposta e aggiungerlo al tuo progetto. Ricorda che il codice proviene dallo sviluppo, quindi dovrai eseguire tutti i test e le eventuali correzioni da solo. Ovviamente, non è un compito semplice, ma era l'unica via di ritorno quando veniva posta questa domanda. Ora, le cose sono cambiate. Vedi la risposta di Oliver qui sotto se soddisfa le tue esigenze. –