如何连接到远程gRPC服务

问题描述 投票:1回答:1

我在C#.NET Core 3.1中创建了gRPC服务和客户端。将服务部署到localhost时,可以毫无问题地连接到它。但是,当我通过WebDeploy将服务发布到IIS并在那里启动它时,我无法连接到它。

对于本地部署,通道初始化如下:

var channel = GrpcChannel.ForAddress("https://localhost:5001");

对于远程部署,我将其更改为以下值,因为它是从远程计算机上的http://localhost:5000上的HTTP服务启动的(我也未能找到更改方法-我希望它以HTTPS的形式启动服务):

AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var channel = GrpcChannel.ForAddress("http://1.2.3.4:5000");

1.2.3.4是远程计算机的IP,我可以ping通。我还创建了防火墙规则,以允许入站端口5000上的所有入站流量。

客户端应用程序在第一次远程调用失败并显示错误消息

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

我不知道要建立到远程服务的连接必须采取哪些措施。到目前为止,我发现的所有示例gRPC代码都使用localhost作为部署点,并没有帮助我找出问题的根本原因。

对我必须错过的任何帮助或指示,我们都表示赞赏。

c# .net-core grpc
1个回答
1
投票

[从Tutorial: Create a gRPC client and server in ASP.NET Core开始,几乎在文章结尾处显示警告,]

ASP.NET Core gRPC当前在Azure应用服务或IIS上不受支持。 Http.Sys的HTTP / 2实现不支持gRPC依赖的HTTP响应尾标...

有关在生产环境中运行gRPC服务的方法,请参考gRPC in production。>

© www.soinside.com 2019 - 2024. All rights reserved.