[英]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.