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

.NET 6环境下Windows 10系统MQTT代理连接失败求助

解决方案:Windows 10下MQTTnet客户端代理连接失败问题

1. 调整代理配置参数

Windows系统下的代理规则与Linux存在差异,可先修改代理参数尝试:

  • 将代理的bypassOnLocal设为false,避免Windows本地代理规则绕过目标服务器:
    .WithProxy(@"http://10.85.19.98:8080", "proxy", "#welcome123", null, false, null)
    
  • 若代理为SOCKS5类型,需明确指定代理类型:
    .WithProxy(new MqttClientProxyOptions
    {
        Address = new Uri("socks5://10.85.19.98:8080"),
        Username = "proxy",
        Password = "#welcome123"
    })
    

2. 为WebSocket单独配置代理

全局代理配置在Windows下可能无法生效到WebSocket连接,改为直接给WebSocket指定代理:

var websocketparameters = new MqttClientWebSocketOptions
{
    Proxy = new WebProxy("http://10.85.19.98:8080")
    {
        Credentials = new NetworkCredential("proxy", "#welcome123")
    }
};

var mqttClientOptionBuilder = new MqttClientOptionsBuilder()
    .WithCleanSession(true)
    .WithWebSocketServer(MqttConstant.BrokerUrl, websocketparameters)
    // 其余配置保留
    .Build();

3. 排除系统代理干扰

Windows的自动代理设置可能覆盖代码配置:

  • 关闭系统设置中的「自动检测设置」;
  • 尝试读取系统代理配置并复用:
    var systemProxy = WebRequest.DefaultWebProxy;
    if (systemProxy != null && systemProxy.Address != null)
    {
        mqttClientOptionBuilder.WithProxy(systemProxy.Address.ToString(), "proxy", "#welcome123", null, false, null);
    }
    

4. 排查安全软件拦截

Windows Defender或第三方安全软件可能拦截代理连接:

  • 临时关闭防火墙测试是否能正常连接;
  • 若测试通过,将MQTT客户端程序添加到防火墙允许列表;
  • 确认代理服务器已开放Windows客户端IP的访问权限。

5. 更新MQTTnet版本

旧版本MQTTnet存在Windows代理处理的已知bug,更新至最新稳定版本后重新测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:29