我通过在azure门户中配置它们覆盖了appsettings.json文件中设置的值。 为此,我进行了以下更改,这些更改可以正常运行,除非调试代码。
Startup.cs
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
Configuration = configuration;
IConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
DBContext.ConnectionString = Configuration.GetConnectionString("Connectionstr");
Constants.AppLogicURI = Configuration["MailUri:LogicAppUri"];
Constants.BlobStorageKey = Configuration["BlobKey:BlobStorageKey"];
Constants.BlobStorageConnectionString = Configuration["BlobConnectionString:BlobStorageConnectionString"];
Constants.BlobUri = Configuration["Uri:BlobUri"];
Constants.StorageAccount = Configuration["AccountName:StorageAccount"];
}
在调试代码时,由于哪个应用程序无法启动,我没有从appsettings.json文件中获取任何值。
仅当我在行Configuration = builder.Build();
中注释掉
不确定为什么需要这样做以及如何解决此问题。
答案 0 :(得分:1)
更改
Configuration["BlobKey:BlobStorageKey"];
收件人
Configuration.GetSection("BlobKey:BlobStorageKey");
因为Configuration
是Startup.Configuration
,并且您在Program.cs
中具有 Build(),所以您需要注释掉Configuration = builder.Build();
答案 1 :(得分:1)
未读取appsettings.json
文件的原因是因为您没有在ConfigurationBuilder
上调用SetBasePath
。通常可以在Directory.GetCurrentDirectory()
中使用WebHost.CreateDefaultBuilder
中的Program.cs
来处理此问题,而SetBasePath
中使用了Startup
。
尽管您可以在IConfiguration
构造函数中调用IConfiguration
,但是当您可以使用appsettings.json
时,没有真正的理由创建自己的appsettings.json
实例正在被传入。此实例已配置为从两者 appsettings.json
和环境变量读取,环境变量将覆盖date_range
中指定的环境变量。
在Azure门户的“应用程序设置”和“连接字符串”部分中指定的任何设置都将覆盖{{1}}文件中指定的设置,因为它们是作为环境变量添加到Azure环境中的。
答案 2 :(得分:0)
您不需要自己构建配置,当您在WebHost.CreateDefaultBuilder(...)
中调用Program.cs
时,.NET Core代码会为您完成配置。
.NET Core将配置不同的提供程序,例如Azure保管库,JSON文件,环境变量,命令行等。
Startup
中唯一需要的是
Configuration = configuration;
您已经在Startup
方法的顶部有了它,这就是为什么当您注释掉Configuration = builder.build();
代码时它可以工作的原因。
您可以在Configuration documentation中找到有关不同提供程序的更多信息以及读取变量的顺序。
编辑
文档显示了.NET Core为您自动添加的提供程序的顺序。关于提供者的部分的最后一句话说:
当您初始化新的提供程序时,将按此顺序提供程序 带CreateDefaultBuilder的WebHostBuilder。有关更多信息,请参见 Web Host: Set up a host。
请查看指向CreateDefaultBuilder
的链接,因为这也说明了该方法默认为您配置的内容。