连接字符串上的 Npgsql 异常
Posted
技术标签:
【中文标题】连接字符串上的 Npgsql 异常【英文标题】:Npgsql exception on connection string 【发布时间】:2017-07-10 14:40:59 【问题描述】:我无法让 Npgsql 连接字符串工作。我尝试了一些方法,例如
NpgsqlConnection conn = new NpgsqlConnection("Server=192.168.1.220;User Id=pgsql;Password=pgsql;Database=pgsql;");
或
var conn = new NpgsqlConnection("Host=192.168.1.220;Username=pgsql;Password=pgsql;Database=pgsql");
都给我抛出异常:
“Npgsql.NpgsqlConnectionStringBuilder”的类型初始化器抛出异常。
我正在运行带有 VS 2010 的 Windows XP 64 位。我已经尝试使用 ODBC 或 pgAdmin III 从那台机器连接到我的 pgsql 服务器 - 都可以正常工作。
这个问题可能与我的 Npgsql 安装有关吗? 我无法使用 NuGet 安装它,因为出现以下错误:
PM> 安装包 Npgsql 安装“Npgsql 3.2.1”。 成功安装“Npgsql 3.2.1”。 将“Npgsql 3.2.1”添加到项目中。 卸载“Npgsql 3.2.1”。 成功卸载“Npgsql 3.2.1”。 安装失败。滚回来... 安装包:无法安装包“Npgsql 3.2.1”。您正在尝试将此包安装到以“.NETFramework,Version=v4.0,Profile=Client”为目标的项目中,但该包 e 不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。 在行:1 字符:16 + 安装包
我也尝试将目标框架切换到 4.0 或 3.5,但结果完全相同。 所以我只是通过从 MSI 安装中提取 .dll 来安装 Npgsql,然后将其加载为参考。
有人知道如何使连接字符串起作用吗?
【问题讨论】:
从您的 nuget 安装异常来看,您似乎正在尝试将 Npgsql 安装到 .NET Framework 4.0 项目中 - 这不受支持。支持的最低版本是 4.5。 如果您仍然在 .NET 4.5(或更高版本)应用程序中遇到异常,请发布您收到的完整异常,包括完整的堆栈跟踪和任何内部异常。仅凭“类型初始化程序引发异常”是不可能知道发生了什么的。 看来问题和你描述的完全一样,但我需要 .NET 4.0 才能让它在 WinXP 上运行,所以,我通过从 Npgsql 切换到 Devart 基本 pgsql 库解决了我的问题。谢谢。 【参考方案1】:您忘记了端口。也许这就是原因。侦听端口 5432 的标准 PostgreSQL 服务器。
NpgsqlConnection conn = new NpgsqlConnection("Server=192.168.1.220;Port=5432;User Id=pgsql;Password=pgsql;Database=pgsql;");
Example Connection String
也许您没有库 Mono.Security.dll。 3.0以下的旧版本是必须的还是启用了系统防火墙?
【讨论】:
感谢您的回复,但它没有帮助,我得到了同样的错误。防火墙被禁用,我可以使用 pgAdmin ||| 从这台机器连接到服务器或 ODBC。 也许你没有库 Mono.Security.dll。在低于 3.0 的旧版本中是必需的。 端口不是必须的,Npgsql默认使用5432端口。以上是关于连接字符串上的 Npgsql 异常的主要内容,如果未能解决你的问题,请参考以下文章
Npgsql .net 版本的PostgreSQL数据库连接字符串及参数
Npgsql .net 版本的PostgreSQL数据库连接字符串及参数
Npgsql .net 版本的PostgreSQL数据库连接字符串及参数
ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库(问题总结)