我有一個asp.net Web API託管在IIS 10(Windows Server 2016)上。當我把從微軟邊緣瀏覽器GET
要求這一點,我看到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 CL客戶使用HTTP/2.0?
您鏈接到的回購似乎只針對服務器組件,而不是客戶端(有一個測試客戶端,它使用TcpClient,但不是真正的HttpClient) –
@RacilHilan謝謝你的回答。 「你可以實現你自己的實現HTTP/2的HttpMessageHandler對象」。你能詳細闡述一下嗎? –
@RashminJaviya您可以使用我的答案中的鏈接從他們的源代碼複製代碼,並將其添加到您的項目中。請記住,代碼來自開發,所以你必須自己做所有的測試和可能的修復。顯然,這不是一項簡單的任務,但它是回答這個問題的唯一方式。現在,情況已經改變。如果符合您的需求,請參閱下面的Oliver的答案。 –