删除继承的 ASP.NET 核心应用设置
Removing inherited ASP.NET Core appsettings
我的启动程序中有以下设置:
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true);
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true)
appsettings.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
我知道我可以通过添加具有不同值的匹配 JSON 结构并省略我想继承的那些来覆盖给定环境的有效设置,例如appsettings.Development.json:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
但是我可以删除一个条目或一个部分,除非用一个空值覆盖每个值属性吗?
-S
根据 Configuration in ASP.NET Core 文档,设置是从两个文件加载的,如果在两个文件中都指定了设置,那么后者中的设置,即您设置中的 appsettings.{env.EnvironmentName}.json
,将覆盖第一个。
因此,如果在 appsettings.json
文件中指定了一个设置,并且您想在 开发 环境中 运行 时删除它,您将需要在 appsettings.Development.json
文件中相应地明确设置(“”、{} 等,具体取决于设置)。
但是,这样的设置可能会建议您的设置不应位于通用 appsettings.json
文件中,而应直接位于特定环境的配置设置文件中。
这样,编写设置可能会更容易。
我的启动程序中有以下设置:
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true);
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true)
appsettings.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
我知道我可以通过添加具有不同值的匹配 JSON 结构并省略我想继承的那些来覆盖给定环境的有效设置,例如appsettings.Development.json:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
但是我可以删除一个条目或一个部分,除非用一个空值覆盖每个值属性吗?
-S
根据 Configuration in ASP.NET Core 文档,设置是从两个文件加载的,如果在两个文件中都指定了设置,那么后者中的设置,即您设置中的 appsettings.{env.EnvironmentName}.json
,将覆盖第一个。
因此,如果在 appsettings.json
文件中指定了一个设置,并且您想在 开发 环境中 运行 时删除它,您将需要在 appsettings.Development.json
文件中相应地明确设置(“”、{} 等,具体取决于设置)。
但是,这样的设置可能会建议您的设置不应位于通用 appsettings.json
文件中,而应直接位于特定环境的配置设置文件中。
这样,编写设置可能会更容易。