Azure Functions の Runtime が V2 になって、従来の .NET Framework から .NET Core がベースに変更になりました。そして、最初に「おや?」と気が付くのが、以下のように、ConfigurationManager を使って、アプリケーション設定から設定情報を読み込もうとした時に例外が出てしまうことです。
var connString = ConfigurationManager.ConnectionStrings["DbConnectionString"].ConnectionString;
この部分は、正直、互換にして欲しかったな。。。と思いながらも、.NET Core がマルチプラットフォーム/OS に対応したものであることから、、、仕方ないかなとも思います。.NET Core では、設定情報の受け渡しが、環境変数渡しになっておりますので、以下のようにして取得する必要があります。
// DLL 参照
# r "Microsoft.Extensions.Configuration"
# r "Microsoft.Extensions.Configuration.Abstractions"
# r "Microsoft.Extensions.Configuration.EnvironmentVariables"
// 名前空間の参照
using Microsoft.Extensions.Configuration;
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
// 環境変数からの取得
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var connString = config.GetConnectionString("DbConnectionString");
log.LogInformation(connString);
// ----- 省略 -----
}
仕様が変わった時には、どのようにコード変更すべきか明示されて然るべきことだと思いますが、残念ながら、きちんとした情報が出ておらず、試行錯誤するハメになりました。。。
もっと情報公開を頑張ってくれ、Azure さん!