使用Asp.Net连接到Heroku Postgres数据库

Chr*_*ris 3 asp.net postgresql heroku

我正在寻找从外部应用程序连接到Heroku Postgres数据库的最佳方法。该应用程序位于asp.net中。我正在尝试使用NpgSQL,但收到证书未知错误。有人做过吗?你有指针吗?

Set*_*Set 10

我使用以下连接字符串连接到 Heroku Postgres 数据库:

string connString = "User ID=<user>;Password=<pass>;Host=<host>;Port=<port>;Database=<database>;Pooling=true;Use SSL Stream=True;SSL Mode=Require;TrustServerCertificate=True;"
Run Code Online (Sandbox Code Playgroud)

在哪里 <user>, <pass>, <host>, <port> and <database>heroku postgres 应用程序设置中的值。端口默认为 5432。

然后使用NpgSql我创建 NpgsqlConnection 的实例:

var conn = new NpgsqlConnection(connString);
Run Code Online (Sandbox Code Playgroud)

Dafault 示例:http ://www.npgsql.org/doc/index.html

  • 对于那些将来阅读的人,我强烈建议您使用 Heroku 的平台 API 以编程方式获取数据库 URI - 您可以 curl 获取数据库 URI,您必须将身份验证令牌作为标头传递。@Set 的解决方案可行,但在某些情况下可能会中断。 (2认同)

Bre*_*dan 10

我用它来“翻译” DATABASE_URL到一个连接字符串

var databaseUrl = Environment.GetEnvironmentVariable("DATABASE_URL");
var databaseUri = new Uri(databaseUrl);
var userInfo = databaseUri.UserInfo.Split(':');

var builder = new NpgsqlConnectionStringBuilder
{
    Host = databaseUri.Host,
    Port = databaseUri.Port,
    Username = userInfo[0],
    Password = userInfo[1],
    Database = databaseUri.LocalPath.TrimStart('/')
};

return builder.ToString();
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢您的回答对我有用!我只是想添加,我需要添加从本地连接到 heroku 服务器。`SslMode = SslMode.Require,TrustServerCertificate = true` (5认同)