Npgsql 4.1.12通过pgBouncer连接Azure数据库时SSL Mode=Require报错
解决Npgsql 4.1.12连接Azure pgBouncer时的ssl_renegotiation_limit错误
问题根源
Npgsql 4.x版本在建立SSL连接时,会默认向服务端发送ssl_renegotiation_limit启动参数,但Azure托管的pgBouncer代理不支持该参数,因此触发08P01: unsupported startup parameter: ssl_renegotiation_limit错误。而Npgsql 8.0已移除该参数的自动发送逻辑,所以新版本无此问题。
无需升级Npgsql的解决方法
受限于框架无法升级Npgsql,可通过以下两种方式解决:
1. 修改连接字符串添加禁用参数
在原有连接字符串中加入Ssl Renegotiation Limit=0,强制Npgsql不发送该不被支持的参数:
Server=xxxxx.postgres.database.azure.com;Port=6432;User Id=user;Password=password;Database=test;CommandTimeout=120;Pooling=False;SSL Mode=Require;Ssl Renegotiation Limit=0;
2. 代码中手动设置连接属性
若不方便修改连接字符串,可在创建NpgsqlConnection实例后,手动将SslRenegotiationLimit设为0:
using (var conn = new NpgsqlConnection("你的原有连接字符串")) { conn.SslRenegotiationLimit = 0; conn.Open(); // 执行数据库操作 }
验证要点
- 确保连接端口已改为pgBouncer的6432
- 保留
SSL Mode=Require参数,Azure PostgreSQL仍强制要求SSL连接 - 测试连接确认错误不再出现
内容的提问来源于stack exchange,提问作者Daniel Gee
相关产品推荐
相关产品推荐

