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
Sfruttare lo streaming di una chiamata Http da Blazor
Utilizzare la session affinity con Azure Container Apps
Short-circuiting della Pipeline in ASP.NET Core
Gestire la cancellazione di una richiesta in streaming da Blazor
Limitare le richieste lato server con l'interactive routing di Blazor 8
Usare un KeyedService di default in ASP.NET Core 8
Paginare i risultati con QuickGrid in Blazor
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Usare il versioning con i controller di ASP.NET Core Web API
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Annunciato Silverlight 4 RC e Windows Phone Developer Tools
- Speciale Razor: il nuovo view engine di WebMatrix e ASP.NET MVC
- Speciale Windows Store app: costruire app con WinRT per Windows 8
- Gestire lo stato all'interno di un class component di ReactJS
- Inserimenti bulk su database con la classe SqlBulkCopy di ADO.NET 2.0
- disponibile su MSDN la versione RTM di #VS2013 Update 2! https://aspit.co/auj #msTechEd