我有grpc dotnet核心应用程序,dotnet核心版本2.1。 在本地机器上执行并从该机器访问时,应用运行良好。当我想从其他计算机访问它(虽然禁用了防火墙,打开了端口)时,我无法访问它。我认为这是代码的问题。我不是dotnet开发人员,但有一些微服务遗留代码:)。难道是Grpc.Core Server类中的问题?
请帮忙
代码:
using System;
using System.Collections.Generic;
using System.IO;
using Grpc.Core;
...
static void Main()
{
const int port = 4000;
const string host = "localhost";
var cert = File.ReadAllText("cert.pem");
var key = File.ReadAllText("key.pem");
var keypair = new KeyCertificatePair(cert, key);
var server = GetServer(port, host, keypair);
server.Start();
server.ShutdownTask.Wait();
}
private static Server GetServer(int port, string host, KeyCertificatePair keypair)
{
return new Server
{
Services = { SomeService.BindService(new SomeServiceImpl()) },
Ports = { new ServerPort(host, port, new SslServerCredentials(new List<KeyCertificatePair>
{
keypair
}))}
};
}
答案 0 :(得分:1)
您的代码明确表示const string host = "localhost";
,这意味着它将仅在回送接口上侦听(=无法从其他计算机访问)。使用例如"[::]"
或"0.0.0.0"
来监听所有网络接口。