当前位置: 首页 > 知识库问答 >
问题:

. net Core Grpc客户端无法调用迎宾服务

东方震博
2023-03-14

我已经看了很长一段时间了,在互联网上浏览了所有不同的帖子,看看是否能找到有相同问题的人,但不知为什么,我似乎是唯一有这个问题的人。

我有一个ASP。net核心服务器,运行Grpc的基本迎宾服务。使用程序“BloomRPG”调用此服务器效果很好,而且响应时间也很长。然而,当我试图从自己编写的(非常基本的)客户机上执行同样的操作时,我会遇到以下错误:

在客户机上:

dbug:Grpc。网客户内部的GrpcCall[1]正在启动gRPC呼叫。方法类型:“一元”,URI:'https://www.MYSERVER.com:50005/greet.Greeter/SayHello“.dbug:Grpc。网客户内部的GrpcCall[18]正在发送消息。trce:Grpc。网客户内部的GrpcCall[21]序列化了“TestService1”。HelloRequest'到15字节的消息。trce:Grpc。网客户内部的GrpcCall[19]消息已发送。失败:Grpc。网客户内部的GrpcCall[6]启动gRPC调用时出错。系统网Http。HttpRequestException:发送请求时出错---

在服务器上:

失败:微软。AspNetCore。服务器Kestrel[0]HTTP/2 over TLS未在仅HTTP/2的endpoint上协商。

由于我成功地使用BloomRPC调用服务,我想问题出在我的客户身上:

客户代码:

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


        var loggerFactory = LoggerFactory.Create(logging =>
        {
            logging.AddConsole();
            logging.SetMinimumLevel(LogLevel.Trace);
        });


        var httpclient = new HttpClient();
        httpclient.DefaultRequestVersion = new Version(2, 0);

        




        using var channel = GrpcChannel.ForAddress("https://www.MYSERVER.com:50005",
            new GrpcChannelOptions { LoggerFactory = loggerFactory, HttpClient = httpclient});
        

        var client = new Greeter.GreeterClient(channel);
        
        var reply = await client.SayHelloAsync(
                          new HelloRequest { Name = "GreeterClient" });
        Console.WriteLine("Greeting: " + reply.Message);
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
        

有人知道我下一步可以尝试什么吗?我觉得我已经用尽了所有的选择:(

共有1个答案

司寇嘉茂
2023-03-14

多亏了@jdweng,我找到了问题的根源。

一个强制性的公司代理服务器正在干扰,在httpclienthandler中设置UseProxy=false为我解决了这个问题,我现在可以毫无问题地调用我的gRPC服务器了!

 类似资料:
  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 在我的项目中,diffrent服务被部署为微服务,授权和身份验证在一个公共jar文件中处理,该文件作为依赖项添加到每个微服务项目中。 微服务之间的通信通过虚拟客户端完成 下面给出了这种服务的分级文件 在一个场景中,我强制使用OAuth库中的feign client来调用我的授权微服务,下面给出了jar的依赖文件 但是,当我用我的服务部署新的jar文件时,在我的jar文件中实现的假客户机不起作用,调

  • 我有一个RESTful服务在Java14SpringBoot微服务上运行。我从运行在Java 7应用程序上的客户机调用这个。 我有一个调用api的RESful客户端。当我从test方法调用它时,它成功工作,我得到了预期的结果,客户端和服务器上没有错误。 问题 当我在JBoss中启动Java7(Struts)应用程序,并通过同一个RESTful客户端调用api时,我收到了错误。 在 Java 14

  • 我无法连接到我的节点。js服务器。当通过节点使用http web服务器在本地运行它时,它工作得很好,但是当连接到外部时,它会加载<code>socket.io。js文件很好,但当尝试使用套接字时,它会从URL中删除端口,无法连接。 而不是在网络请求中执行此操作: http://external-domain.com:3000/socket.io/?EIO=3 它是这样做的: http://exte

  • 我正在使用spring、spring boot、eureka(用于服务发现)和ribbon开发一个微服务应用程序。 我的应用程序由三个服务组成:客户端、服务器和eureka服务器 客户端和服务器都在eureka服务器上注册,之后客户端使用eureka服务发现调用服务器。 我可以在本地运行应用程序,一切都很好。 但是当部署在aws上时,事情就会失控。 接下来的步骤 同一安全组中有三个ec2实例 每个