Как создать соединение от.NET Service к удаленному серверу PostgreSQL

Я не могу подключиться к удаленному серверу PostgreSQL из кода C# .NET с помощью какой-либо строки подключения. (Моя строка подключения содержит основную информацию, такую ​​как адрес хоста, порт, имя пользователя, пароль, имя базы данных).

Я могу подключиться к серверу PostgreSQL из PGAdmin 4, используя SSH Tunnel, у меня есть Удаленный вход (имя пользователя и пароль), порт (22) и закрытый ключ RSA.

Моя строка подключения:Server=HOST_ADDRESS;Port=HOST_PORT;User Id=POSTGRES_USERNAME;Password=POSTGRES_PASSWORD;Database=POSTGRES_DATABASE_NAME;

Примечание: я использую Npgsql Сборка.NET

И ошибка, которую я получаю:

No connection could be made because the target machine actively refused it
 Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
   at Npgsql.NpgsqlConnector.<RawOpen>d__153.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Npgsql.NpgsqlConnector.<Open>d__149.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Npgsql.ConnectorPool.<AllocateLong>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Npgsql.NpgsqlConnection.Open()

2 ответа

Решение

Проверьте файл pg_hba.conf в вашем каталоге данных. Это указывает, кто может и не может подключиться к вашей базе данных. Конфигурация по умолчанию является довольно строгой (ошибки на стороне предостережения).

Если вы доверяете всем машинам в вашей сети, при условии, что у них есть ИД пользователя / пароль (например, рабочая среда с брандмауэром), вы можете добавить что-то вроде этого в файл:

host     all     all     0.0.0.0/0       md5

Если нет, проверьте документы или даже сам файл, который хорошо объясняет различные варианты.

Мне кажется, что компьютер, к которому вы пытаетесь подключиться, может заблокировать порт, пожалуйста, проверьте, так ли это. если это не так, тогда вы можете проверить ваше строковое соединение, следуя синтаксису, указанному в документе Npsql ( https://www.npgsql.org/doc/index.html), он выполняется следующим образом:

var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";

Здесь вы можете найти параметры строки подключения.

Другие вопросы по тегам