You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET gRPC客户端连接C++ gRPC服务器报错求助

解决C# gRPC客户端连接C++ gRPC服务器的Internal错误

以下是针对你遇到的错误的排查和修复步骤:

1. 客户端必须显式启用明文连接支持

你的C++服务器使用grpc::InsecureServerCredentials()(明文传输),但.NET的GrpcClient默认要求HTTPS连接,这是报错的核心原因。修改客户端配置,添加明文凭据支持:

public void ConfigureService(IServiceCollection services)
{
    string address = "http://localhost:65000";
    services.AddGrpcClient<GreeterService.GreeterServiceClient>(options =>
    {
        options.Address = new Uri(address);
    })
    // 配置明文连接
    .ConfigureChannel(options =>
    {
        options.Credentials = ChannelCredentials.Insecure;
    });
}

2. 服务器端确保监听所有网络接口

把服务器的监听地址从localhost:65000改成0.0.0.0:65000,避免仅绑定回环地址导致的连接限制:

CGreeterServer::CGreeterServer()
{
    // Other codes in constructor
    grpc::ServerBuilder builder;
    // 修改为监听所有可用接口
    builder.AddListeningPort("0.0.0.0:65000", grpc::InsecureServerCredentials());
    builder.RegisterService(m_pGreeterService);
    m_pServer = builder.BuildAndStart();
}

3. 检查端口占用情况

用以下命令确认65000端口没被其他程序占用:

  • Windows:netstat -ano | findstr :65000
  • Linux/macOS:lsof -i :65000
    如果端口被占用,同步修改客户端和服务器的端口号即可。

4. 启用日志定位深层问题

如果以上步骤没解决,开启详细日志查看具体错误细节:

  • 客户端(appsettings.json):
{
  "Logging": {
    "LogLevel": {
      "Microsoft.AspNetCore.Grpc.Client": "Debug",
      "System.Net.Http.HttpClient": "Debug"
    }
  }
}
  • 服务器端:
// 在ServerBuilder初始化前添加
grpc::EnableDefaultLogger();
grpc::ServerBuilder builder;
// ... 原有代码

内容的提问来源于stack exchange,提问作者amsga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:07:41