| File: Program.cs | Web Access |
| Project: src\playground\BlazorHosted\BlazorHosted.Client\BlazorHosted.Client.csproj (BlazorHosted.Client) |
using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.Hosting; using OpenTelemetry.Metrics; using OpenTelemetry.Trace; var builder = WebAssemblyHostBuilder.CreateDefault(args); // Environment variables are injected via JS initializer into MonoConfig.environmentVariables. // They are available via Environment.GetEnvironmentVariable() but NOT automatically in IConfiguration. // Service Discovery reads from IConfiguration, so we add environment variables to configuration. builder.Configuration.AddEnvironmentVariables(); // Add Aspire service defaults (OpenTelemetry, service discovery, resilience) builder.AddBlazorClientServiceDefaults(); // Named HttpClient for the weather API - uses service discovery to resolve "weatherapi" builder.Services.AddHttpClient("weatherapi", client => { client.BaseAddress = new Uri("https+http://weatherapi"); }); // Named HttpClient for the time API - uses service discovery to resolve "timeapi" builder.Services.AddHttpClient("timeapi", client => { client.BaseAddress = new Uri("https+http://timeapi"); }); var host = builder.Build(); // WebAssembly does not support IHostedService, so TelemetryHostedService is never started. // We must force initialization of MeterProvider and TracerProvider manually. // See: https://github.com/dotnet/aspire/issues/2816 _ = host.Services.GetService<MeterProvider>(); _ = host.Services.GetService<TracerProvider>(); await host.RunAsync();