如何連接 Azure Web App 的 MySQL in App

在啟用 Azure Web App 的 MySQL in App 功能後,它會提供一個環境變數讓你取得連線字串

image

而環境變數 MYSQLCONNSTR_localdb 的內容是

Database=localdb;Data Source=127.0.0.1:*****;User Id=azure;Password=********

結果這連線字串根本無法連到資料庫!😠

解決方法

找了資料後發現連線字串應該長得像下面這種格式

Server=127.0.0.1;Port=*****;User=azure;Password=********;Database=localdb;

於是寫了一個方法去轉換連線字串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string GetConnectionStringFromMySqlInApp()
{
    var connStr = Environment.GetEnvironmentVariable("MYSQLCONNSTR_localdb");

    var dict = connStr.Split(';')
        .Select(kvp => kvp.Split('='))
        .ToDictionary(kvp => kvp[0], kvp => kvp[1]);

    var dataSource = dict["Data Source"].Split(':');
    var server = dataSource[0];
    var port = dataSource[1];
    var user = dict["User Id"];
    var password = dict["Password"];
    var database = dict["Database"];

    return $"Server={server};Port={port};User={user};Password={password};Database={database}";
}

轉換格式後就能順利連到資料庫了!

相關連結