grpc 错误记录一下 掉坑里爬了三天

RpcException: Status(StatusCode=Internal, Detail="Error starting gRPC call. HttpRequestException: An error occurred while sending the request. IOException: The response ended prematurely, with at least 9 additional bytes expected.")

  经常报这样的错我。我把坑了好几天。。。

记录一下

第一步   制定kestrel  监听的端口    并制定是http2 协议

  public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.ConfigureKestrel(option =>
                    {
                        option.ListenLocalhost(5001, o => o.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2);
                    });
                    webBuilder.UseStartup<Startup>();
                });
    }

  第二部 客户端调用时候 

 AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);

                string targetUrl = "http://localhost:5001";
                using (var channel = GrpcChannel.ForAddress(targetUrl))
                {
                    var client = new Score.ScoreClient(channel);

                    Console.WriteLine("***************单次调用************");
                    {
                        var reply = await client.GetScoreAsync(new ScoreRequest() { LessonId = "123" });
                        string result = Newtonsoft.Json.JsonConvert.SerializeObject(reply.Score);
                        Console.WriteLine($"ScoreClient {Thread.CurrentThread.ManagedThreadId} 服务返回数据1:{result} ");
                        base.ViewBag.Result = result;
                    }
                }

 

posted @ 2021-05-29 16:51  非著名架构师  阅读(2081)  评论(0编辑  收藏  举报