diff --git a/src/Aspire.Hosting.Yarp/YarpEnvConfigGenerator.cs b/src/Aspire.Hosting.Yarp/YarpEnvConfigGenerator.cs index 6101d95000c..80c5ef82cf1 100644 --- a/src/Aspire.Hosting.Yarp/YarpEnvConfigGenerator.cs +++ b/src/Aspire.Hosting.Yarp/YarpEnvConfigGenerator.cs @@ -36,7 +36,7 @@ private static void FlattenToEnvVars(Dictionary environmentVaria { if (IsSimple(obj)) { - environmentVariables.Add(prefix, obj); + environmentVariables.Add(prefix, obj.ToString() ?? ""); } else if (obj is IReadOnlyDictionary dict) { @@ -74,7 +74,7 @@ private static void FlattenToEnvVars(Dictionary environmentVaria { if ((sslProtocols & protocol) == protocol) { - environmentVariables.Add($"{prefix}__{counter}", protocol); + environmentVariables.Add($"{prefix}__{counter}", protocol.ToString()); counter++; } } diff --git a/tests/Aspire.Hosting.Yarp.Tests/YarpConfigGeneratorTests.cs b/tests/Aspire.Hosting.Yarp.Tests/YarpConfigGeneratorTests.cs index 7a897a6ec88..4a0d1cdee0e 100644 --- a/tests/Aspire.Hosting.Yarp.Tests/YarpConfigGeneratorTests.cs +++ b/tests/Aspire.Hosting.Yarp.Tests/YarpConfigGeneratorTests.cs @@ -242,6 +242,23 @@ public async Task GenerateEnvVariablesConfiguration() await Verify(content, "env"); } + [Fact] + public void EnsureAllEnvVarsAreStrings() + { + var variables = new Dictionary(); + var builder = TestDistributedApplicationBuilder.Create(); + + YarpEnvConfigGenerator.PopulateEnvVariables( + variables, + _validRoutes.Select(r => new YarpRoute(r)).ToList(), + _validClusters.Select(c => new YarpCluster(c, c.Destinations!.First().Value.Address)).ToList()); + + foreach (var variable in variables) + { + Assert.IsType(variable.Value); + } + } + [Fact] [RequiresDocker] public async Task GenerateEnvVariablesConfigurationDockerCompose()