相关疑难解决方法(0)

在.Net中将HTTP 2与HttpClient一起使用

我正在尝试通过HTTP 2.0请求数据。我正在使用.Net Core 2.2中的HttpClient。我使用Windows 10,但将在生产环境中的Linux上运行。问题在于响应上的版本似乎总是“ 1.1”。我做错了什么?

using (var client = new HttpClient())
{
    using (var request = new HttpRequestMessage(new HttpMethod("GET"),
    "https://duckduckgo.com/"
    ))
    {
        request.Version = new Version(2, 0);
        var response = await client.SendAsync(request);

        Console.WriteLine(response.Version);
    }
}
Run Code Online (Sandbox Code Playgroud)

http dotnet-httpclient http2 .net-core asp.net-core

5
推荐指数
2
解决办法
4763
查看次数

为什么 Xamarin Android 无法发送 GRPC/Http2 请求?

我正在尝试运行Dot net conf 2019 keynote中的 xamarin 表单示例。我已经托管了 grpc 服务,.net core 控制台应用程序可以毫无问题地从中获取数据。但是,当运行 xamarin 应用程序时,ALPN 协商(客户端问候)发生在 http 1.1 上,因此 grpc 调用失败。 源代码可在此处获取

错误消息:Grpc.Core.RpcException:状态(StatusCode=Internal,Detail=“gRPC 响应错误。响应协议降级为 HTTP/1.1。”

调试器显示 xamarin 上使用的 SocketsHttpHandler 没有支持 Http 2 的代码。

问题:

  1. 显然 Xamarin 支持 Grpc 和 Http。为什么会失败?鉴于我的怀疑是正确的,所以问题是因为 xamarin 使用旧版本的 System.Net.Http.dll 不支持 Http2。
  2. 如何确保 Xamarin 使用支持 Http2 的正确运行时程序集?
  3. 如果这对某人有用,您能分享一下系统配置吗?

配置

使用共享运行时: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 支持。
单声道:fd9f379
Java.Interop:xamarin/java.interop/d16-4@c4e569f
Xamarin.Android工具:xamarin/xamarin-android-tools/d16-5@9f4ed4b

我尝试过的事情:

  1. 从 ModernHttpClient 切换到托管 HttpClient 实现 /NativeMessageHandler。仍然失败并出现同样的错误。(因为ALPN协商仍然使用相同的代码?) …

android xamarin http2 grpc

3
推荐指数
1
解决办法
3170
查看次数