diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs
index b82810acc71e3d..08cec0453bd211 100644
--- a/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs
@@ -38,11 +38,11 @@ public ChainedConfigurationProvider(ChainedConfigurationSource source)
///
/// The key.
/// When this method returns, contains the value.
- /// if a value for the specified key was found, otherwise .
+ /// if the chained configuration has a non- value for the specified key, otherwise .
public bool TryGet(string key, out string? value)
{
value = _config[key];
- return !string.IsNullOrEmpty(value);
+ return value is not null;
}
///
diff --git a/src/libraries/Microsoft.Extensions.Configuration/tests/ChainedConfigurationProviderTests.cs b/src/libraries/Microsoft.Extensions.Configuration/tests/ChainedConfigurationProviderTests.cs
index 7fde62c4115824..805a235ad17b0e 100644
--- a/src/libraries/Microsoft.Extensions.Configuration/tests/ChainedConfigurationProviderTests.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration/tests/ChainedConfigurationProviderTests.cs
@@ -153,6 +153,38 @@ public void ChainedConfiguration_ReloadingOuterConfigurationRoot_RaisesSingleOut
Assert.Equal(0, innerNotifications);
}
+ [Fact]
+ public void ChainedConfiguration_TryGetReturnsTrueForEmptyStringValue()
+ {
+ IConfigurationProvider provider = new ChainedConfigurationSource
+ {
+ Configuration = new ConfigurationBuilder()
+ .AddInMemoryCollection(new Dictionary { { "Key", string.Empty } })
+ .Build(),
+ ShouldDisposeConfiguration = false,
+ }
+ .Build(new ConfigurationBuilder());
+
+ Assert.True(provider.TryGet("Key", out string? value));
+ Assert.Equal(string.Empty, value);
+ }
+
+ [Fact]
+ public void ChainedConfiguration_TryGetReturnsFalseForMissingKey()
+ {
+ IConfigurationProvider provider = new ChainedConfigurationSource
+ {
+ Configuration = new ConfigurationBuilder()
+ .AddInMemoryCollection(new Dictionary { { "OtherKey", "inner-value" } })
+ .Build(),
+ ShouldDisposeConfiguration = false,
+ }
+ .Build(new ConfigurationBuilder());
+
+ Assert.False(provider.TryGet("MissingKey", out string? value));
+ Assert.Null(value);
+ }
+
private class TestConfigurationProvider : ConfigurationProvider
{
public TestConfigurationProvider(string key, string value)