首页 > 解决方案 > Elastic Beanstalk appsettings.json 不工作

问题描述

我使用具有多个 .NET Core 5.0 项目的 Elastic Beanstalk 环境。

应用程序在我的 Procfile 中运行良好

api-user: dotnet ./api-user/api-user.dll --urls http://localhost:5000
api-shop: dotnet ./api-shop/shop.dll --urls http://localhost:5001

不幸的是,.NET 似乎无法从我的appsettings.jsonappsettings.<ENVIRONMENT>.json文件中获取配置。

我记录了所有ConfigurationProviders在 .NET 中注册的内容,它们以JsonConfigurationProvider

这些文件也存在于工作目录中。我通过 SSH 进行了检查:

cd var/app/current/api-user
cat appsettings.json

配置 withappsettings.jsonDevelopment和本地正常工作Production。为什么云环境不是这样?

标签: asp.net-core.net-coreamazon-elastic-beanstalk

解决方案


当您在本地运行时,VS 读取launchSettings.json文件,其中ASPNETCORE_ENVIRONMENT变量设置为正确的值(开发,生产)。

在云中运行时,环境变量不存在。我不能告诉你亚马逊,但是当你在 Azure 中运行时,你必须ASPNETCORE_ENVIRONMENT在云中部署的应用程序的属性中进行设置(即这不是你的 VS 解决方案的一部分,而是部署的应用程序的一部分)。我猜亚马逊会有类似的东西和一个设置这个变量的地方。

如果您从 shell 运行 .net 应用程序(我真的不知道 beanstalk 是如何工作的),您应该设置 env 变量,例如

setx ASPNETCORE_ENVIRONMENT "Development"

或者您的外壳可以做到这一点。


推荐阅读