ASP.NET core エラー「PostgresException: 28000: no pg_hba.conf entry for host “xxxx::xxxx:xxxx:xxxx:xxxxxx”, user “xxxxx”, database “xxxx”, no encryption」が発生した場合の対処法

ASP.NET core エラー「PostgresException: 28000: no pg_hba.conf entry for host “xxxx::xxxx:xxxx:xxxx:xxxxxx”, user “xxxxx”, database “xxxx”, no encryption」が発生した場合の対処法

ASP.NET core で、エラー「PostgresException: 28000: no pg_hba.conf entry for host “xxxx::xxxx:xxxx:xxxx:xxxxxx”, user “xxxxx”, database “xxxx”, no encryption」が発生した場合の対処法を記述してます。.NETのバージョンは6を使用してます。

環境

  • OS windows10 pro
  • IDE Visual Studio 2022
  • .NET 6
  • Npgsql 6.0.4

エラー全文

DB接続時には発生。ローカルの環境のみで発生。

PostgresException: 28000: no pg_hba.conf entry for host "xxxx::xxxx:xxxx:xxxx:xxxxxx", user "xxxxx", database "xxxx", no encryption

Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|211_0(NpgsqlConnector connector, bool async, DataRowLoadingMode dataRowLoadingMode, bool readingNotifications, bool isReadingPrependedMessage)
  System.Threading.Tasks.ValueTask<TResult>.get_Result()
  System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()
  Npgsql.Internal.NpgsqlConnector.Authenticate(string username, NpgsqlTimeout timeout, bool async, CancellationToken cancellationToken)
  Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|191_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, bool async, CancellationToken cancellationToken, bool isFirstAttempt)
  Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, bool async, CancellationToken cancellationToken)
  Npgsql.ConnectorPool.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, bool async, CancellationToken cancellationToken)
  Npgsql.ConnectorPool.<Get>g__RentAsync|28_0(NpgsqlConnection conn, NpgsqlTimeout timeout, bool async, CancellationToken cancellationToken)
  System.Threading.Tasks.ValueTask<TResult>.get_Result()
  System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()
  Npgsql.NpgsqlConnection.<Open>g__OpenAsync|45_0(bool async, CancellationToken cancellationToken)
  Npgsql.NpgsqlConnection.Open()
  hoge() in hogeController.cs

画像

原因

「ConnectionStrings」の「Host」に「ホスト名」が指定されていたため

対処法

ホスト名でなく、IPアドレスか、ローカルからのみのアクセスであれば「localhost」を指定する