C# 连接时出现Npgsql异常

C# 连接时出现Npgsql异常,c#,npgsql,C#,Npgsql,我在C#.NET 4.0应用程序中使用Npgsql 2.0.11.94连接到PostgreSql数据库。我已经根据他们网站上的示例形成了连接字符串,当我使用NpgsqlConnection对象调用connect时,会引发以下异常: A first chance exception of type 'Npgsql.NpgsqlException' occurred in Npgsql.dll Additional information: ERROR: 22023: 3 is outside t

我在C#.NET 4.0应用程序中使用Npgsql 2.0.11.94连接到PostgreSql数据库。我已经根据他们网站上的示例形成了连接字符串,当我使用NpgsqlConnection对象调用connect时,会引发以下异常:

A first chance exception of type 'Npgsql.NpgsqlException' occurred in Npgsql.dll

Additional information: ERROR: 22023: 3 is outside the valid range for parameter "extra_float_digits" (-15 .. 2)
抛出异常后,代码将正确执行。也就是说,与数据库的连接已经建立,查询返回正确的数据。有人知道它为什么抛出这个异常吗?以下是我连接数据库的代码:

string strConnection = "Server=192.168.253.20;Port=5432;User Id=alex;Password=asdf;Database=mydatabase;";
NpgsqlConnection conn = null;
try
{
    conn = new NpgsqlConnection(strConnection);
    conn.Open();
}
catch (Exception e)
{
}
任何帮助都将不胜感激

谢谢,
Alex

建立连接时的初始设置存在缺陷

在第一次打开的每个连接上都会执行一些不同的命令(但在重新使用池连接时不会重复),这一个命令试图处理不同版本的PostgreSQL之间的浮点数格式所允许的不同精度

很明显,事情并没有按计划进行

快速查看一下源代码,似乎调用已经包装好,应该会包含任何此类异常,但可能是在上次发布之后。如果是这样,那么从源代码构建可能会解决您的问题


或者您可以返回一个版本,或者在下一个版本之前使用try-catch进行包装。

Jon Hanna正确地解释了为什么我们有这样一个try-catch以及为什么会抛出异常。问题是,VS.net将向您显示抛出的任何异常,甚至是那些被try-catch异常处理(如Npgsql)吃掉的异常

我认为vs.net的行为是这样的,正确的,它向您展示了尽管异常正在被处理,但仍然有异常被抛出,在这个特定的例子中,只是被忽略了

您可以检查此异常是否仅在使用vs.net调试代码时出现。另外,正如您也注意到的,您的代码继续工作,就好像没有发生错误一样。所以,你不必为此担心


我希望这会有所帮助。

我想您在管理Visual Studio项目时遇到此异常,因此请尝试在主菜单->调试->异常中取消选中公共语言运行时异常和托管调试助手列表。 祝你好运
保罗

谢谢,我会密切关注漏洞修复!现在这几乎是固定的。我刚刚创建了一个pull请求,并对此进行了修复:只是想让大家知道这个错误已经在github中修复。@FranciscoJunior-我有最新版本2.2.4.3,但仍然面临相同的问题。我在哪里可以找到修复程序?嗨,科迪。您使用的是哪个postgresql版本?自postgresql 9.0以来,支持额外的浮点数值3。我们在启动与服务器的连接时对此进行了检查。您可以在这里看到:也许您使用的是GAC中的早期版本?只是想让您知道Npgsql现在已经改进了连接设置处理,并且不再引发此异常。Npgsql在发送命令之前检查服务器是否支持此值。