- 显然 Xamarin 支持 Grpc 和 Http,为什么会失败? 如果我的怀疑是正确的,那么问题是因为 xamarin 使用一个不支持 Http2 的旧版本 System.Net.Http.dll。
- 如何确保 Xamarin 使用支持 Http2 的正确运行时程序集?
- 如果对某人有效,请分享系统配置。
配置
使用共享运行时:true
Mono 共享运行时版本(在 Android 设备上看到的):10.1.0-18。
Windows 10 上的 Visual Studio 2019:
Xamarin.Android SDK 10.1.4.0(d16-4/e44d1ae)
Xamarin.Android 参考程序集和 MSBuild 支持。
Mono: fd9f379
Java.Interop: xamarin/java.interop/d16-4@c4e569f
Xamarin.Android 工具: xamarin/xamarin-android-tools/d16-5@9f4ed4b
我尝试过的事情:
- 从ModernHttpClient切换到Managed HttpClient实现/NativeMessageHandler。仍然出现相同的错误。(因为ALPN协商仍使用相同的代码?)
- 使用Version 2发送HttpRequestMessage到新的HttpClient。仍然使用相同的基础处理程序。所以无法协商Http2。
- 禁用共享运行时。没有起作用。
在.net core控制台应用程序中,由SocketsHttpHandler使用的HttpConnectionSettings具有支持http2的代码:
但是在xamarin上没有。选择AndroidClientHandler,但是委托给SocketsHttpHandler。它的设置不具备http2支持: