- Published on
ASP.NET Core MVC - 使用 Heroku 的 PostgreSQL
前面文章 ASP.NET Core MVC + Heroku 已經把 .NET Core MVC 的專案放到 Heroku 了,現在要使用它所提供的免費 PostgreSQL,雖然免費的限制資料數量為 10,000 筆,不過如果是小型專案的話基本上已經夠用了,可以看一下 Heroku 的介紹
Heroku CLI 建立
- 先進到之前的專案資料夾,就可以使用 Heroku 的 cli 來建立 Database
heroku addons:create heroku-postgresql:hobby-dev
- 建立完成之後可以看一下相關的資訊
heroku pg:info
- 可以直接透過 cli 拿到相關的連線資料
heroku pg:credentials:url DATABASE
Heroku 畫面建立
- 來到
Resources
Tab,在下方Add-ons
的地方搜尋Postgres
,點Heroku Postgres
安裝
- 選擇
Hobby Dev - Free
然後按Provision
- 看到畫面下方出現
Heroku Postgres :: Database
就代表建立好了,可以點進去
- 會另開新分頁顯示 Database 的相關資訊
- 可以點
Settings
Tab,點開View Credentials
,可以在下面看到相關的連線資訊
使用 DataGrip 連接
- 按照前面畫面上的資料,依序填入
- 點選
Advanced
Tab,找到sslmode
,把 Value 改成require
- 回到
General
Tab,點Test Connection
應該會出現Successful
使用 ASP.NET Core MVC 連接
在這裡會使用到之前上傳到 Heroku 的專案,然後相關的使用方式也可以參考之前的文章 ASP.NET Core MVC - EF Core 使用 PostgreSQL,這邊只講不一樣的地方
在
UseNpgsql
裡面需要多一個參數OptionBuilder
,裡面需要呼叫RemoteCertificateValidationCallback
然後直接回傳true
services.AddDbContext<AppDbContext>(options =>
{
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), optionBuilder =>
{
optionBuilder.RemoteCertificateValidationCallback((sender, certificate, chain, errors) => true);
});
});
- 在 Connection 的地方,最後需要多一個參數
SslMode=Require;
,需要注意的是大小寫必需要一樣,不然會有問題
{
"ConnectionStrings": {
"DefaultConnection": "Server=aws.com;Port=5432;Database=db;UID=user;PWD=password;SslMode=Require;"
}
}