はじめに
C#で Azure SQL Database に接続する際に、おそらく多くの人が参照することになる公式チュートリアルがあります。
このチュートリアルでは Azure SQL Database への接続文字列を下記のように設定します。
var connection = String.Empty;
if (builder.Environment.IsDevelopment())
{
// ローカル環境
// appsettings.Development.jsonから取得
builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json");
connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING");
}
else
{
// 本番環境
// どこから取得している?
connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING");
}
builder.Services.AddDbContext<PersonDbContext>(options =>
options.UseSqlServer(connection));
AZURE_SQL_CONNECTIONSTRING
はappsettings.Development.json
でしか定義していないため本番環境では取得できません。本番環境の接続文字列がどこからきているのかずっと疑問だったため調べました。
結論
先ほどのチュートリアルにばっちり書いてありました。
ホストされた運用シナリオについては環境変数から、パスワードレス データベース接続文字列を取得します。
ホストされた運用シナリオとは App Service にデプロイした環境の事です。そしてこの場合の環境変数はappsetting.json
ではなくAzure App Service の環境変数の事です。
という事で、本番環境では接続文字列では App Service 側で保持していました。
おわりに
最初に学習した際には右も左もわからず動かすことに精一杯だったため細かいところがおろそかになっていたなーと反省しました。
この記事が皆様のコーディングライフの助けになれば幸いです!
参考