我正在嘗試發出 HTTP/2.0 請求,但無法使其正常作業。根據這篇文章和其他帖子https://stackoverflow.com/a/53776383/18171693 .NET > 3.0 應該支持它,但我無法讓它作業。
Debug.WriteLine("Version:" Environment.Version.ToString());
var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Get,"https://http2.akamai.com/demo")
{
Version = new Version(2, 0)
};
var x = await client.SendAsync(req);
上面的代碼生成:
Version:4.0.30319.42000
Exception thrown: 'System.ArgumentException' in mscorlib.dll
An exception of type 'System.ArgumentException' occurred in mscorlib.dll but was not handled in user code
Only HTTP/1.0 and HTTP/1.1 version requests are currently supported.
uj5u.com熱心網友回復:
您沒有使用 .NET-Core。
您使用的版本 - 4.0.30319.42000- 對應于 .NET Framework 4.6 ,而不是 .NET core。
從如何:確定安裝了哪些 .NET Framework 版本:
公共語言運行時 (CLR),它管理和執行應用程式的代碼。單個 CLR 版本通常支持多個 .NET Framework 版本。例如,CLR 版本 4.0.30319.xxxxx,其中 xxxxx小于 42000,支持 .NET Framework 版本 4 到 4.5.2。大于或等于 4.0.30319.42000 的 CLR 版本支持從 .NET Framework 4.6 開始的 .NET Framework 版本。
.NET Framework 僅支持 Http 版本 1/1.1,但是這個問題How to make the .net HttpClient use http 2.0? 有一些解決方法。
我已經測驗了您的代碼,它適用于 .NET core 3.1 和 .NET 6。在 .NET 6 中進行演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/429173.html
下一篇:C 中的無限回圈
