我有一个asp.net核心应用程序,它有身份服务器的设置。为此,我有一个appsettings.json,一个appsettings.Development.json和一个appsettings.Production.json。
appsettings.json:
..
"ApplicationInsights": {
"InstrumentationKey": ""
},
"IdentityServer": {
"Clients": {
"ApplySupportTool.Client": {
"Profile": "IdentityServerSPA"
}
}
},
"BuildInfo": {
"Environment": "Integration",
"Version": "1.0.0 Beta"
},
..
appsettings.Development.json
{
"IdentityServer": {
"Key": {
"Type": "Development"
}
}
}
appsettings.Production.json
{
"IdentityServer": {
"Key": {
"Type": "Store",
"StoreName": "My",
"StoreLocation": "CurrentUser",
"Name": "[Name]"
}
}
}
这在本地是没有问题的,我可以通过从launchsettings中删除环境变量来在它们之间切换:
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
在加载设置文件模拟到默认模板方面,我的HostBuilder是这样创建的,没有为设置文件添加任何特殊内容。
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webHostBuilder =>
{
webHostBuilder
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseAzureAppServices();
})
.UseSerilog();
}
当我签入Startup.cs的构造函数时,我可以验证它是否也加载了附加文件。
但当我将其部署到Azure时,似乎总是加载开发版本。据我所知,在没有设置值的情况下,它应该用于生产(在本地工作)。为了确保安全,我还尝试将值为“Production”的ASPNETCORE_ENVIRONMENT显式添加到我的AppService。但这也没有改变任何东西。我必须以特殊方式加载它吗?
2条答案
按热度按时间oyxsuwqo1#
希望开发不会保留在Program.cs中的最后一个位置,因为它会覆盖您的appsetting和production.json
同样在WebAPP刀片中,如果你覆盖了ASPNETCORE_ENVIRONMENT变量,需要重新启动示例以反映和重新加载更改。
此外,您的program.cs的更多信息将帮助我们找到根本原因。
hi3rlvi22#
也许它会帮助某些人。我以为也有同样的问题。但我发现我在多个地方设置了环境变量=“Development”。在我的项目设置中,在IIS中,在web.config中。当我删除这些设置时,所有设置都开始按设计工作。此web.config设置被部署到Azure,然后由Azure使用来设置环境变量。