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
.
一样简单
我为我的 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
.