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

8
我正在寻找从外部应用程序连接到Heroku Postgres数据库的最佳方法。该应用程序使用asp.net开发。我试图使用NpgSQL,但是遇到了证书未知的错误。是否有人做过这个?您有什么建议吗?

嗨。欢迎来到 SO,你至少尝试了什么呢?你能给我们一些起始代码来帮助你吗? - acostela
PostgreSQL是否正在运行SSL=on? - d1ll1nger
2个回答

23

我使用这个方法来将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();

7
非常感谢您的回答,对我很有帮助!我只想补充一点,我需要添加连接到我的本地到Heroku服务器。 SslMode = SslMode.Require, TrustServerCertificate = true - ibrahimozgon

11

我正在使用以下连接字符串连接到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;"

其中 <user>, <pass>, <host>, <port> 和 <database> 是来自 Heroku Postgres 应用设置的值。端口默认为 5432。

然后使用 NpgSql 创建 NpgsqlConnection 实例:

var conn = new NpgsqlConnection(connString);

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


2
对于未来的读者,我强烈建议您使用Heroku平台API以编程方式获取数据库URI - 您可以使用curl获取数据库URI,但必须将身份验证令牌作为标头传递。@Set的解决方案可行,但在某些情况下容易出现故障。 - BenKoshy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接