【问题标题】:Connecting to Heroku Postgres Database with Asp.Net使用 Asp.Net 连接到 Heroku Postgres 数据库
【发布时间】:2018-11-14 11:22:31
【问题描述】:

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

【问题讨论】:

  • 嗨。欢迎来到 SO,您至少尝试过什么?你能给我们一些起始代码来帮助你吗?
  • PostgreSQL 是否正在运行 SSL=on?

标签: asp.net postgresql heroku


【解决方案1】:

我使用它来将 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();

【讨论】:

  • 非常感谢您为我提供的答案!我只想添加,我需要添加以从本地连接到 heroku 服务器。 SslMode = SslMode.Require, TrustServerCertificate = true
【解决方案2】:

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

&lt;user&gt;, &lt;pass&gt;, &lt;host&gt;, &lt;port&gt; and &lt;database&gt; 是来自 heroku postgres 应用设置的值。端口默认为 5432。

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

var conn = new NpgsqlConnection(connString);

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

【讨论】:

  • 对于那些将来阅读的人,我强烈建议您使用 Heroku 的平台 API 以编程方式获取数据库 URI - 您可以 curl 获取您必须将身份验证令牌作为标头传递的数据库 URI . @Set 的解决方案会起作用,但在某些情况下可能会中断。
猜你喜欢
  • 2014-05-28
  • 2013-04-21
  • 2021-07-10
  • 2021-06-21
  • 2016-08-12
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
相关资源
最近更新 更多