[英]ASP.NET Core 2.0 - Configuration[“TestSecret”] always return null
我开始在ASP.NET Core 2.0 Web Api上工作 。 我在secrets.json文件中添加了2个机密,并试图通过Startup文件中的Configuration属性读取它们。 每次我打电话给我时,都尝试从Configuration
变量获取值,它返回null。 下面显示了我如何从secrets.json读取此示例。
public void ConfigureServices(IServiceCollection services)
{
var secret = Configuration["TestSecret"];
我的secrets.json文件如下所示:
{
"TestSecret": "SecretValue"
}
我也尝试过使用以下方法检索值:
public void ConfigureServices(IServiceCollection services)
{
IConfigurationSection secret = Configuration.GetSection("TestSecret");
var value = secret.Value;
这将返回与TestSecret
部分相对应的部分,但IConfigurationSection
的值也为null。
我试图安装Microsoft.Extensions.Configuration.UserSecrets
NuGet程序包,但这没有帮助。 我是否缺少需要安装的软件包,或者是否有其他方法来检索此值?
如果我需要提供更多信息来帮助解决此问题,请在评论中提出。 我将尝试提供尽可能多的信息来帮助解决此问题。
通常,您使用一个名为“ appSettings.json”的文件来存储所有类似的json值。 无需在2.0中手动添加此文件。 除非有多个json文件的特定原因,否则我建议您这样做,因为它允许您将所有应用程序特定的设置都放在一个位置
可以手动添加.json文件。 BuildWebHost方法中Program.cs中的asp.net Core 2.0
您添加以下内容
.ConfigureAppConfiguration((WebHostBuilderContext, ConfigurationBuilder) =>
{
ConfigurationBuilder
.AddJsonFile("Secrets.json", optional: true);
ConfigurationBuilder.AddEnvironmentVariables();
})
根据设置,整个方法应如下所示
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((WebHostBuilderContext, ConfigurationBuilder) =>
{
ConfigurationBuilder
.AddJsonFile("Secrets.json", optional: true);
ConfigurationBuilder.AddEnvironmentVariables();
})
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();
要从您的ConfigureServices方法中获取值,请使用
var testSecret = Configuration.GetSection("Secrets")["TestSecret"];
这是Secrets.Json文件的外观
{
"Secrets":
{
"TestSecret": "SecretValue"
}
}
您是否配置为在启动方法中使用机密?
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder();
if (env.IsDevelopment())
{
builder.AddUserSecrets<Startup>();
}
Configuration = builder.Build();
}
在这里阅读更多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.