我无法使用某些连接字符串从C#.NET代码连接到远程PostgreSQL服务器。 (我的连接字符串包含基本信息,例如主机地址,端口,用户名,密码,数据库名称)。
我能够使用SSH隧道从PGAdmin 4连接到PostgreSQL服务器, 我有远程登录名(用户名和密码),端口(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()
答案 0 :(得分:0)
在我看来,您尝试连接的计算机可能已阻塞端口,请检查是否是这种情况。如果不是,则可以按照Npsql documentantion(https://www.npgsql.org/doc/index.html)上的语法检查字符串连接,如下所示:
var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";
在这里您可以找到connection string parameters。
答案 1 :(得分:0)
检查数据目录中的pg_hba.conf文件。这表明谁可以和不能连接到您的数据库。默认配置非常严格(警告方法有误)。
如果您信任网络中的所有计算机,只要它们具有用户ID /密码(认为带有防火墙的工作环境),则可以将以下内容添加到文件中:
host all all 0.0.0.0/0 md5
如果没有,请检查文档,甚至文件本身都能很好地解释各种选项。