close

IDE:VS2019


我一定要寫這個牢騷,有一個週末,突然心血來潮想使用GCP的服務,印象中都會用Azure、AWS與GCP做比較,身為.NET開發人員最優先選擇一定是Azure

Azure真的部署很方便,一個網站來說,App Service架上去,下載設定檔,VS發佈選擇此設定檔,就上去了,超簡單且超級快!!!

Azure要拿來給不是自己用當然沒問題(我的心聲&&錢包的心身)

好啦,誰叫GCP提供了12個月以及300美金的試用哩XD....上網查查.Net Core也可以部署在GAE這個服務上(類似簡易版的App Service)

於是就申請入坑看看,結果,雖然GAE上的說明書寫得很清楚,但是,我看得很模糊阿.....我中文跟英文的理解能力太差了QQ....

光是把連接上Cloud Sql就花了我四天的時間,才真的連上去(公用IP的方式),所以我不得不打這邊文章來記錄

如果你剛好跟我遇到一樣的問題,希望你早點看到我這篇文章....

在使用GAE的時候,目前遇到了兩大問題

1. GAE跑Cloud Sql

如果使用Public IP無法正常連上,但是SSMS可以正常連上(應該這時候你會在連線設定=>新增自己的IP了吧)

這時候開始懷疑人生,開啟了Private IP來測試,疑,GAE可以使用資料庫了欸,好吧,能用就好<=我原本的想法

後來,因為問題二的關係,我又開始研究問題一了XD....

Private IP一定比較好,但我就是想要試試看Public IP連線壓,明明就說可以,為什麼連不上~~~

其實還是要用Private IP才是安全的喔!!

2. 使用了Authorize後,很容易驗證失敗,然後導回登入頁面

我在本機測試的時候,明明就很順,但是一放到GAE上後,登入成功=>點一個Authorize的網頁,就導回登入頁面了

如果是因為授權失敗,這樣子我直接輸入網址進去該Authorize的網頁,應該也會失敗才對,但是沒有,多用幾次就進去了...

我把相同的程式放到Azure上,很正常,放到其他Server的IIS,也是正常,就是GAE上不行

因為問題二的關係,不想脫坑,為了逃避現實,我才去繼續用問題一的,哈哈哈哈

牢騷完了,去正題吧!!


首先,在GCP申請帳號...設定專案...<=這邊如果不會....請先去試試看,不難的

 申請好後,會有專案名稱,專案ID等等的

1. 建置CloudSql,這個很簡單,應該照著網頁做下去就可以了,想要多好的規格,就選多好的規格吧~~

2. 建置好後,可以先到連線設定,網路,設定你的IP,這樣子可以直接使用ssms連上去建立Database、Table等等的,這樣比較快

image

3. 啟用 Cloud SQL Admin API    啟用API

4. 總攬=>將連線名稱給記錄下來,這個在之後的app.yaml用的到

image

5. 將畫面切到VS裡面,在專案新增app.yaml

裡面內容為

image

runtime: aspnetcore
env: flex

beta_settings:
    cloud_sql_instances: "sample-286901:asia-east1:samplesql=tcp:1433"

紅字就是上面的連線名稱

6. appsettings.json裡面

Server=cloudsql;User Id=sqlserver;Password=cJ8lrN9xHftDBux6;Database=Test

紅字的Server請固定為cloudsql,這樣GAE才連線的到

正式環境,這邊建議要加密比較好喔

7. Startup.cs 裡面注入連線字段,不懂得話...請上網查查相依性注入之類的~~

如果是自己用連線字串的話,就不用管這段了

public void ConfigureServices(IServiceCollection services)  {

            services.AddDbContext<MyContext>(o => o.UseSqlServer(Configuration.GetConnectionString("Database")));
        }

8. 將網站傳送到GAE上

這邊就很簡單了,看你要手打指令上傳,或是用VS點點點上傳

網址教學

我覺得這篇寫得很好

抱怨一下,GAE的部署真的很久很久很久~~~~~~~~~~~~~~~~~

9.試試看

沒意外應該可以把資料存入了

arrow
arrow

    軒軒的爸媽 發表在 痞客邦 留言(0) 人氣()