Le Azure Function sono un servizio della piattaforma Microsoft Azure che permettono di definire piccole funzioni nei più svariati linguaggi e di poter scalare all'infinito, adattandosi automaticamente alle esigenze.
Nel caso del mondo .NET se utilizziamo funzioni per il .NET Framework godiamo della possibilità di usare la classe statica ConfigurationManager, se invece usiamo .NET Core, non esiste nessun membro statico, ma siamo noi a dover sfruttare il sistema builtin nel modo più appropriato, poiché nel caso delle function, non esiste un unico entry point come siamo abituati nei normali applicativi. Nel nostro codice, quindi, è necessario simulare un comportamento di configurazione univoca, utilizzando manualmente il ConfigurationBuilder, come nell'esempio.
public static class ConfigurationUtility
{
private static readonly Lazy<IConfiguration> _configuration = new Lazy<IConfiguration>(BuildConfiguration);
public static IConfiguration Configuration => _configuration.Value;
private static IConfigurationRoot BuildConfiguration()
{
var configurationBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true)
.AddEnvironmentVariables();
return configurationBuilder.Build();
}
}
La classe statica dispone di una proprietà in lazy loading che carica la configurazione al primo utilizzo di ConfigurationUtility.Configuration. Possiamo notare che viene aggiunto un provider basato su file json, qualora ne avessimo uno a disposizione, ma, cosa più importante, viene chiamato AddEnvironmentVariables per incorporare le variabili d'ambienti provenienti dal pannello di configurazione delle Azure Function.

Usando una sintassi basata sui due punti possiamo definire in modo flat anche sezioni e strutture ad albero. Nell'esempio la chiave Email:To può essere recuperata come segue.
IConfigurationSection section = ConfigurationUtility.Configuration.GetSection("email");
string to = section["to"];
Così facendo non c'è distinzione nell'approccio alla configurazione, indipendentemente dal linguaggio o dal framework che stiamo utilizzando.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
La gestione della riconnessione al server di Blazor in .NET 9
Applicare un filtro per recuperare alcune issue di GitHub
Creare una libreria CSS universale: Immagini
Proteggere le risorse Azure con private link e private endpoints
Collegare applicazioni server e client con .NET Aspire
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Utilizzare Hybrid Cache in .NET 9
Effettuare il refresh dei dati di una QuickGrid di Blazor
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Loggare le query più lente con Entity Framework
I più letti di oggi
- abbiamo pubblicato l'agenda del prossimo #aspilive del 12/12 su #win8 e #wp8: https://aspit.co/w8-live iscrizioni sempre gratuite!
- domani dalle 14 non perdere #aspilive! 4 ore in streaming su tutte le novità di #vs2013. iscriviti su https://aspit.co/VS14-live
- Future Decoded - Roma
- PWAConf 2020 - Online
- Microsoft Security Bulletin di luglio 2008
- Disponibile il SP1 di SQL Server 2008
- Vulnerabilità 0-Day per ASP.NET: a rischio le applicazioni non configurate correttamente
- Speciale performance: come sviluppare applicazioni ad elevate prestazioni