diff --git a/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniStreamConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniStreamConfigurationProvider.cs index a0c1d7b59bd02f..ac71fc18f85072 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniStreamConfigurationProvider.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniStreamConfigurationProvider.cs @@ -50,9 +50,9 @@ public static IDictionary Read(Stream stream) { // remove the brackets #if NET - sectionPrefix = string.Concat(line.AsSpan(1, line.Length - 2), ConfigurationPath.KeyDelimiter); + sectionPrefix = string.Concat(line.AsSpan(1, line.Length - 2).Trim(), ConfigurationPath.KeyDelimiter); #else - sectionPrefix = line.Substring(1, line.Length - 2) + ConfigurationPath.KeyDelimiter; + sectionPrefix = line.Substring(1, line.Length - 2).Trim() + ConfigurationPath.KeyDelimiter; #endif continue; } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Ini/tests/IniConfigurationTest.cs b/src/libraries/Microsoft.Extensions.Configuration.Ini/tests/IniConfigurationTest.cs index 18e4903c318b55..f7c91fc4c3bfaf 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Ini/tests/IniConfigurationTest.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Ini/tests/IniConfigurationTest.cs @@ -160,6 +160,28 @@ public void SupportAndIgnoreComments() Assert.Equal("MySql", iniConfigSrc.Get("Data:Inventory:Provider")); } + [Fact] + public void ShouldRemoveLeadingAndTrailingWhiteSpacesFromKeyAndValue() + { + var ini = "[section]\n" + + " \t key \t = \t value\t "; + var iniConfigSrc = new IniConfigurationProvider(new IniConfigurationSource()); + iniConfigSrc.Load(TestStreamHelpers.StringToStream(ini)); + + Assert.Equal("value", iniConfigSrc.Get("section:key")); + } + + [Fact] + public void ShouldRemoveLeadingAndTrailingWhiteSpacesFromSectionName() + { + var ini = "[ \t section \t ]\n" + + "key=value"; + var iniConfigSrc = new IniConfigurationProvider(new IniConfigurationSource()); + iniConfigSrc.Load(TestStreamHelpers.StringToStream(ini)); + + Assert.Equal("value", iniConfigSrc.Get("section:key")); + } + [Fact] public void ThrowExceptionWhenFoundInvalidLine() {