使用 IConfiguration,[value] 有效,但 IsSettingEnabled 相同 returns false
Using IConfiguration, [value] works but IsSettingEnabled for the same returns false
在我从事的特定项目中,我使用的模式与我在其他项目中成功使用的模式相同。但是,对于这个,我无法成功使用 IConfiguration 的 IsSettingEnabled。
Setup.cs
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
}
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
var context = builder.GetContext();
builder.ConfigurationBuilder
.AddJsonFile(Path.Combine(context.ApplicationRootPath, $"appsettings.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false);
}
}
appsettings.Development.json
{
"ConfigName": "myconfig"
}
TheFunction.cs
public class TheFunction
{
private IConfiguration _configuration = null;
public TheFunction(IConfiguration configuration)
{
_configuration = configuration;
}
[FunctionName("TheFunction")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
string configName = "ConfigName";
string configValue = _configuration[configName];
bool configValueExists = _configuration.IsSettingEnabled(configName);
}
当代码运行时,configValue 是预期的“myconfig”。但是,configValueExists 为 False。
我在设置中遗漏了什么吗?这就像 Dictionary IsSettingEnabled 使用的任何东西都没有被构建,并且 [] 运算符使用不同的方法来获取值。
基于 source code Azure 的 IsSettingEnabled
检查设置值是否不为空并且可以解释为真布尔值:
public static bool IsSettingEnabled(this IConfiguration configuration, string settingName)
{
// check the target setting and return false (disabled) if the value exists
// and is "falsey"
string value = configuration[settingName];
if (!string.IsNullOrEmpty(value) &&
(string.Compare(value, "1", StringComparison.OrdinalIgnoreCase) == 0 ||
string.Compare(value, "true", StringComparison.OrdinalIgnoreCase) == 0))
{
return true;
}
return false;
}
而"myconfig"
在这种情况下绝对不能解释为真实。
在我从事的特定项目中,我使用的模式与我在其他项目中成功使用的模式相同。但是,对于这个,我无法成功使用 IConfiguration 的 IsSettingEnabled。
Setup.cs
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
}
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
var context = builder.GetContext();
builder.ConfigurationBuilder
.AddJsonFile(Path.Combine(context.ApplicationRootPath, $"appsettings.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false);
}
}
appsettings.Development.json
{
"ConfigName": "myconfig"
}
TheFunction.cs
public class TheFunction
{
private IConfiguration _configuration = null;
public TheFunction(IConfiguration configuration)
{
_configuration = configuration;
}
[FunctionName("TheFunction")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
string configName = "ConfigName";
string configValue = _configuration[configName];
bool configValueExists = _configuration.IsSettingEnabled(configName);
}
当代码运行时,configValue 是预期的“myconfig”。但是,configValueExists 为 False。
我在设置中遗漏了什么吗?这就像 Dictionary IsSettingEnabled 使用的任何东西都没有被构建,并且 [] 运算符使用不同的方法来获取值。
基于 source code Azure 的 IsSettingEnabled
检查设置值是否不为空并且可以解释为真布尔值:
public static bool IsSettingEnabled(this IConfiguration configuration, string settingName)
{
// check the target setting and return false (disabled) if the value exists
// and is "falsey"
string value = configuration[settingName];
if (!string.IsNullOrEmpty(value) &&
(string.Compare(value, "1", StringComparison.OrdinalIgnoreCase) == 0 ||
string.Compare(value, "true", StringComparison.OrdinalIgnoreCase) == 0))
{
return true;
}
return false;
}
而"myconfig"
在这种情况下绝对不能解释为真实。