asp.net 核心中的配置键是否应该不区分大小写?

Are the configuration keys in asp.net core supposed to be case-insensitive?

我为我的 ASP.NET Web 应用程序创建了一个自定义配置提供程序,我从 Microsoft.Extensions.Configuration.ConfigurationProvider 继承了它,并覆盖了 Load() 方法并使用 IDictionary<string, string> Data 初始化了道具一个新的 Dictionary<string, string>().

所以我有一个 appsettings.json 配置文件,其中包含

{
    "Token" : "Token 1"
}

并且在我的自定义提供程序中,我用“令牌 2”覆盖了令牌

我的代码中有一个错误,我调用了 configuration["token"](小写),我注意到加载了应用程序设置中的值,而不是我的自定义提供程序中的值。

看来appsettings配置是不区分大小写的,但是我的自定义provider 不是。
那么它应该是吗?我刚刚创建了一个新词典,我不确定是否可以在不编写更多代码的情况下使其不区分大小写。

Microsoft 作为 .NET 本身的一部分从 NuGet 提供的提供程序默认使用不区分大小写的键 (code)。

您的自定义提供程序是否区分大小写取决于您,但我建议您也这样做,并使用不区分大小写的键值查找来支持源。

如果您使用的是 Dictionary<K, V>,那么它就像使用带有比较器的相同构造函数并使用 StringComparer.OrdinalIgnoreCase.

一样简单