Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin表单和gRPC:服务器返回了无效或无法识别的响应_C#_Xamarin_Xamarin.forms_Grpc - Fatal编程技术网

C# Xamarin表单和gRPC:服务器返回了无效或无法识别的响应

C# Xamarin表单和gRPC:服务器返回了无效或无法识别的响应,c#,xamarin,xamarin.forms,grpc,C#,Xamarin,Xamarin.forms,Grpc,我正在尝试从gRPC服务获取响应,但我得到一个错误,即当我从Xamarin应用程序调用时,服务器返回了无效或无法识别的响应。但是,如果我使用一个WPF客户机,该客户机使用与Xamarin应用程序相同的gRPC客户机库,那么它可以正常工作,我会从服务中得到响应 服务代码如下: webBuilder.ConfigureKestrel(options => { options.Listen(IPAddress.Any

我正在尝试从gRPC服务获取响应,但我得到一个错误,即当我从Xamarin应用程序调用时,服务器返回了无效或无法识别的响应。但是,如果我使用一个WPF客户机,该客户机使用与Xamarin应用程序相同的gRPC客户机库,那么它可以正常工作,我会从服务中得到响应

服务代码如下:

            webBuilder.ConfigureKestrel(options =>
            {
                options.Listen(IPAddress.Any, 5001, listenOptions =>
                {
                    listenOptions.Protocols = HttpProtocols.Http2;
                    listenOptions.UseHttps("server.pfx", "1111");
                });
            });
            webBuilder.UseStartup<Startup>();
我做错了什么?起初我以为这是因为android不能使用http,所以我需要https,但现在我使用https。我确实忽略了来自服务器的任何证书,这可能是原因吗?但是错误消息可能与SSL或类似的东西有关,而不是告诉用户响应无法识别

谢谢


编辑:在承载该服务的控制台应用程序中,我得到了以下失败:HTTP/2 over TLS未在仅HTTP/2的端点上协商。

您可以尝试使用
Grpc.Core
Grpc Web
,如中所述

使用gRPC.Net.Client通过HTTP/2调用gRPC当前不可用 支持Xamarin。我们正在努力以一种全新的方式改进HTTP/2支持 未来的Xamarin版本。Grpc.Core和Grpc网络是可行的替代方案 这是今天的工作

你可以参考

        HttpClientHandler miHandler = new HttpClientHandler();

        miHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;

        GrpcChannelOptions misOpciones = new GrpcChannelOptions() { HttpHandler = miHandler };

        var miChannel = GrpcChannel.ForAddress("https://192.168.1.134:5001", misOpciones);