J'ai ces entrées dans mon 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"
}
}
}
J'ai ce code pour lire les valeurs au démarrage
services.Configure<BusinessUnitMapping>(options => configuration.GetSection("BusinessUnitMapping").Bind(options));
où se trouve BusinessUnitMapping
public class BusinessUnitMapping
{
public Dictionary<string, string> Values { get; set; }
public BusinessUnitMapping()
{
Values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
}
lorsque j'exécute l'application de fonction localement, il peut lire ces paramètres dans BusinessUnitMapping sans aucun problème.
L'édition avancée des paramètres d'application dans le portail Azure autorise uniquement une paire clé-valeur simple comme ci-dessous
[
{
"name": "AzureWebJobsDashboard",
"value": "DefaultEndpointsProtocol=Somevalue",
"slotSetting": false
},
{
"name": "AzureWebJobsStorage",
"value": "DefaultEndpointsProtocol=Somevalue",
"slotSetting": false
},
...
]
-Alan-
- Est-ce une approche correcte pour stocker les paramètres d'application complexes dans Azure Function?
Ceci est encore une question ouverte: voir ce problème github demandant exactement cela
- Comment configurer BusinessUnitMapping dans Azure Portal pour l'application de fonction que j'ai déployée?
Mon approche préférée actuelle consiste à utiliser le modèle d'options avec un délégué qui utilise GetEnvironmentVariable qui fonctionnera à la fois localement et dans Azure. L'inconvénient est que vous ne pouvez pas créer de types complexes dans le fichier de paramètres local lui-même, mais votre objet peut être aussi complexe que vous le souhaitez.
Un exemple simple:
Dans local.settings.json:
{
...
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
...
"SomeSection:Setting1": "abc",
"SomeSection:Setting2": "xyz",
},
...
}
Dans votre startup:
services.Configure<MySettingsPoco>(o =>
{
o.Setting1 = Environment.GetEnvironmentVariable("SomeSection:Setting1");
o.Setting2 = Environment.GetEnvironmentVariable("SomeSection:Setting2");
});
Ensuite, dans Azure, vous pouvez créer ces paramètres comme suit: