Come sappiamo, Blazor ci permette di leggere la configurazione da un file appsettings.json, che per default si trova nella cartella wwwroot.
Tuttavia, più che un file statico, alle volte è molto più conveniente utilizzare un vero e proprio endpoint di ASP.NET Core, perché magari vogliamo leggere queste informazioni da un database o da altri sorgenti, o in generale perché è più semplice manipolarle lato server.
Immaginiamo allora di avere un controller simile al seguente:
[ApiController] [Route("[controller]")] public class ConfigController : ControllerBase { [HttpGet] public object Get() { // questa impostazione potrebbe essere letta da un database return new { WelcomeMessage = "Hello from the server" }; } }
Lato Blazor, possiamo implementare la logica per leggere questo endpoint allo startup e usarne il contenuto per popolare la configurazione, istanziando un HttpClient nella classe Program come nell'esempio:
public class Program { public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); var httpClient = new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }; builder.Services.AddScoped(sp => httpClient); using var serverConfig = await httpClient.GetAsync("/config"); using var stream = await serverConfig.Content.ReadAsStreamAsync(); builder.Configuration.AddJsonStream(stream); await builder.Build().RunAsync(); } }
Nel codice in alto, abbiamo sfruttato lo stesso HttpClient che registriamo nell'IoC container per effettuare una chiamata all'endpoint che abbiamo appena esposto, aggiungendo poi il contenuto alla configurazione tramite il metodo AddJsonStream, fondendolo con quanto già presente in appsettings.json.
A questo punto, potremo accedere alle impostazioni provenienti dal server in maniera del tutto analoga al file statico:
@page "/" @inject Microsoft.Extensions.Configuration.IConfiguration Configuration <h1>@this.Configuration.GetSection("WelcomeMessage").Value</h1>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare l'organizzazione delle risorse con Azure Policy
Migliorare la sicurezza dei prompt con Azure AI Studio
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Miglioramenti nell'accessibilità con Angular CDK
Utilizzare gRPC su App Service di Azure
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Potenziare Azure AI Search con la ricerca vettoriale
Testare l'invio dei messaggi con Event Hubs Data Explorer
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Utilizzare Tailwind CSS all'interno di React: installazione
Usare le collection expression per inizializzare una lista di oggetti in C#
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
I più letti di oggi
- Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Recuperare App Service cancellati su Azure
- Eliminare una project wiki di Azure DevOps
- Creare una libreria CSS universale: Immagini