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

WinForms应用连接部署的gRPC服务器报failed to connect to all addresses错误

gRPC部署后无法连接问题修复方案

问题根因

  • 域名转IP访问错误:你使用的临时站点属于共享托管环境,同一公网IP对应多个站点,靠请求头的Host字段区分站点,你将域名转成IP后直接访问,托管平台无法匹配到你部署的gRPC服务,直接拒绝连接。
  • 服务端监听配置错误:多数虚拟托管/云托管环境不允许服务直接绑定公网IP,你将Kestrel监听地址绑定为域名解析后的公网IP会导致服务启动后无法正常接收外部流量。
  • 客户端构造参数错误:构造Channel时传入带http://前缀的地址会导致域名解析失败。

客户端代码修复

// 不要将域名转为IP,直接传入域名即可
var channel = new Channel("mujf94-001-site1.gtempurl.com", 80, ChannelCredentials.Insecure);
// 客户端也需要开启HTTP2未加密支持开关
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
Client = channel.CreateGrpcService<T>();

服务端配置修复

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            webBuilder.ConfigureKestrel(options =>
            {
                // 替换绑定地址为0.0.0.0,监听所有网卡的80端口,由托管平台转发流量
                options.Listen("0.0.0.0", 80, o => o.Protocols = HttpProtocols.Http2);
            });
            webBuilder.UseStartup<Startup>();
        });

如果你的托管层有反向代理(IIS/Nginx等),还需要确认反向代理已经开启HTTP/2支持,配置了gRPC流量转发规则。


额外排查点

  • 先在客户端所在机器测试80端口连通性,确认网络层面没有防火墙拦截。
  • 确认你的托管服务商允许HTTP/2和gRPC流量,部分免费虚拟主机会限制这类协议的使用。

内容的提问来源于stack exchange,提问作者Asım Gündüz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:27:04