私のlocal.settings.jsonにこれらのエントリがあります
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "whateverstorageaccountconnectionstring",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
},
"BusinessUnitMapping": {
"Values": {
"Connections": "CON",
"Products": "PRD",
"Credit & Affordability": "CAA",
"Accounts Receivable": "ARC",
"Identity": "IDT"
}
}
}
起動時に値を読み取るこのコードがあります
services.Configure<BusinessUnitMapping>(options => configuration.GetSection("BusinessUnitMapping").Bind(options));
ここで、BusinessUnitMappingは
public class BusinessUnitMapping
{
public Dictionary<string, string> Values { get; set; }
public BusinessUnitMapping()
{
Values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
}
関数アプリをローカルで実行すると、これらの設定を問題なくBusinessUnitMappingに読み込むことができます。
Azure Portalのアプリケーション設定の高度な編集では、以下のような単純なキーと値のペアのみが許可されます
[
{
"name": "AzureWebJobsDashboard",
"value": "DefaultEndpointsProtocol=Somevalue",
"slotSetting": false
},
{
"name": "AzureWebJobsStorage",
"value": "DefaultEndpointsProtocol=Somevalue",
"slotSetting": false
},
...
]
-アラン-
- これは、Azure Functionに複雑なアプリ設定を格納するための正しいアプローチですか?
これはまだ未解決の質問です:参照してください これを尋ねているこのgithubの問題
- デプロイしたFunction App用にAzure PortalでBusinessUnitMappingを構成するにはどうすればよいですか?
私の現在の推奨アプローチは、ローカルとAzureの両方で機能するGetEnvironmentVariableを使用するデリゲートで オプションパターン を使用することです。欠点は、ローカル設定ファイル自体に複合型を作成できないことですが、オブジェクトは好きなだけ複雑にすることができます。
簡単な例:
Local.settings.jsonで:
{
...
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
...
"SomeSection:Setting1": "abc",
"SomeSection:Setting2": "xyz",
},
...
}
あなたのスタートアップでは:
services.Configure<MySettingsPoco>(o =>
{
o.Setting1 = Environment.GetEnvironmentVariable("SomeSection:Setting1");
o.Setting2 = Environment.GetEnvironmentVariable("SomeSection:Setting2");
});
次に、Azureで次のようにこれらの設定を作成できます。