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

Npgsql连接Azure PostgreSQL时在Azure VM环境下出现连接超时问题

问题排查与解决方案

核心原因初步定位

你遇到的是Npgsql 2.2.7旧版本与Azure PostgreSQL SSL验证逻辑不兼容的典型问题,pgAdmin使用独立的PostgreSQL连接栈,不受Npgsql版本限制,因此可以正常连接。

分步排查操作

  • 1. 修正连接字符串参数

    首先确认连接字符串的基础配置正确性:你的报错日志中服务器名显示为progres.database.azure.com,存在拼写遗漏,正确应为postgres.database.azure.com,请先核对Server地址无拼写错误、无多余空格。
    其次Npgsql 2.2.7默认没有开启Azure要求的证书兼容逻辑,需要补充以下配置:

    <add name="DbConnectionString" connectionString="User Id=你的用户名@PG服务器名;Password=你的密码;Server=你的PG服务器地址.postgres.database.azure.com;Port=5432;Database=库名;SslMode=Require;Timeout=30;Trust Server Certificate=true" providerName="Npgsql" />
    

    注意两个必填配置:

    • User Id必须是实际用户名@Azure PostgreSQL服务器名的格式,不能只填用户名
    • Trust Server Certificate=true用于临时规避旧版Npgsql无法识别Azure根证书的问题
  • 2. 验证VM侧.NET应用网络权限

    因为pgAdmin可以连通,VM网络层面的出站规则是正常的,只需要检查两个点:

    • Windows防火墙出站规则中,是否允许你的控制台应用exe访问5432端口
    • 检查应用的配置文件、VM的.NET框架machine.config中是否配置了默认代理,导致.NET流量被代理拦截
  • 3. 修复生产环境证书验证问题

    上述配置中的Trust Server Certificate=true仅用于测试验证,生产环境请将Azure PostgreSQL的根CA证书导入到VM的「受信任的根证书颁发机构」本地计算机存储中,导入后可以移除该参数,保证连接安全性。

长期最优方案

Npgsql 2.2.7是2015年发布的历史版本,存在大量已知的连接、兼容Bug,建议将Npgsql升级到4.1及以上的稳定版本,原生支持Azure PostgreSQL的SSL验证逻辑,不需要额外配置即可正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:18:04