Как создать соединение от .NET Service к удаленному серверу PostgreSQL - PullRequest
0 голосов
/ 11 февраля 2019

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

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

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

Примечание. Я использую Npgsql .NET Assembly

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

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 ]

0 голосов
/ 12 февраля 2019

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

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

host     all     all     0.0.0.0/0       md5

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

0 голосов
/ 11 февраля 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...