C#应用程序中的npgsql问题 - 远程主机强制关闭了现有连接

10

在尝试从C#实用程序打开PostgreSQL数据库时,我遇到了以下错误:

System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭了现有的连接。---> System.Net.Sockets.SocketException:远程主机强制关闭了现有的连接

我已经尝试从远程计算机和运行PostgreSQL服务器的计算机上运行此程序。

这两台计算机上都没有防火墙,我可以使用相同的密码通过Postgres管理实用程序轻松连接到数据库和服务器。我已检查用户名是否对数据库具有权限。

这是我的连接代码:

public bool updateFromServer()
{
    try
    {
        NpgsqlConnection conn = new NpgsqlConnection(connString);
        conn.Open();
        conn.Close();
        return true;
    }
    catch (Exception e)
    {
        conn.close()
        return false;
    }
}
任何帮助都将不胜感激。

服务器日志是显而易见的查找位置。另外,我不是C#程序员,但你没有得到堆栈跟踪吗?哪一行代码引起了异常? - Roland Turner
1个回答

15

我花了1个小时搜索,但没有找到问题的所在。后来意识到PG将其日志放在“pg_log”文件夹中。我查看了其中的内容,找到可能的问题。

事实证明,你只需要在“pg_hba.conf”文件中正确设置“host”条目即可。对于我来说,该文件位于C:\ Program Files \ PostgreSQL \ 9.1 \ data目录中。例如

host all all 192.168.1.2/32 md5

其中192.168.1.2是客户端的IP地址。

顺便提一下,在入站规则(Windows Vista、Windows 7、Windows 2008+)中仍然需要打开5432端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接