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;
    }
}

これについての助けをいただければ幸いです。

4

1 に答える 1

14

同じ検索に1時間費やしましたが、問題は見つかりませんでした。しかし、その後、PG がそのログを pg_log フォルダーに置くことに気付きました。考えられる問題を確認するために調べました。

「pg_hba.conf」ファイルに正しい「ホスト」エントリが必要なだけです。私にとって、このファイルは C:\Program Files\PostgreSQL\9.1\data ディレクトリにあります。例えば

ホスト すべて すべて 192.168.1.2/32 md5

192.168.1.2 はクライアントの IP アドレスです。

ところで、受信ルールとして 5432 ポートを開く必要があります (Windows Vista、Windows 7、Windows 2008 以降)。

于 2012-06-25T16:52:44.117 に答える