diff --git a/src/Components/WebAssembly/WebAssembly/src/Hosting/WebAssemblyHostBuilder.cs b/src/Components/WebAssembly/WebAssembly/src/Hosting/WebAssemblyHostBuilder.cs index c9971669d6c0..30e4c5b03a89 100644 --- a/src/Components/WebAssembly/WebAssembly/src/Hosting/WebAssemblyHostBuilder.cs +++ b/src/Components/WebAssembly/WebAssembly/src/Hosting/WebAssemblyHostBuilder.cs @@ -52,6 +52,11 @@ public static WebAssemblyHostBuilder CreateDefault(string[]? args = default) WebAssemblyCultureProvider.Initialize(); + // Add environment variables to configuration by default. + // This aligns WebAssembly behavior with server-side ASP.NET Core applications + // where environment variables are automatically included in IConfiguration. + builder.Configuration.AddEnvironmentVariables(); + // Right now we don't have conventions or behaviors that are specific to this method // however, making this the default for the template allows us to add things like that // in the future, while giving `new WebAssemblyHostBuilder` as an opt-out of opinionated diff --git a/src/Components/WebAssembly/WebAssembly/src/Microsoft.AspNetCore.Components.WebAssembly.csproj b/src/Components/WebAssembly/WebAssembly/src/Microsoft.AspNetCore.Components.WebAssembly.csproj index ba479f5352f7..94d3670617d0 100644 --- a/src/Components/WebAssembly/WebAssembly/src/Microsoft.AspNetCore.Components.WebAssembly.csproj +++ b/src/Components/WebAssembly/WebAssembly/src/Microsoft.AspNetCore.Components.WebAssembly.csproj @@ -17,6 +17,7 @@ + diff --git a/src/Components/WebAssembly/WebAssembly/test/Hosting/WebAssemblyHostBuilderTest.cs b/src/Components/WebAssembly/WebAssembly/test/Hosting/WebAssemblyHostBuilderTest.cs index 901712a21240..e2321da4593a 100644 --- a/src/Components/WebAssembly/WebAssembly/test/Hosting/WebAssemblyHostBuilderTest.cs +++ b/src/Components/WebAssembly/WebAssembly/test/Hosting/WebAssemblyHostBuilderTest.cs @@ -310,4 +310,35 @@ private class CircularServiceB { public CircularServiceB(CircularServiceA serviceA) { } } + + [Fact] + public void Configuration_IncludesEnvironmentVariables_WhenAddedExplicitly() + { + // Arrange + var testEnvVarKey = $"TEST_WASM_CONFIG_{Guid.NewGuid():N}"; + var testEnvVarValue = "test-value-12345"; + + try + { + // Set an environment variable before creating the builder + Environment.SetEnvironmentVariable(testEnvVarKey, testEnvVarValue); + + var builder = new WebAssemblyHostBuilder(new TestInternalJSImportMethods()); + + // This mimics what CreateDefault now does + builder.Configuration.AddEnvironmentVariables(); + + // Act + var host = builder.Build(); + + // Assert + var configuration = host.Services.GetRequiredService(); + Assert.Equal(testEnvVarValue, configuration[testEnvVarKey]); + } + finally + { + // Clean up the environment variable + Environment.SetEnvironmentVariable(testEnvVarKey, null); + } + } }