asp.net-core - 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.json
和appsettings.<ENVIRONMENT>.json
文件中获取配置。
我记录了所有ConfigurationProviders
在 .NET 中注册的内容,它们以JsonConfigurationProvider
这些文件也存在于工作目录中。我通过 SSH 进行了检查:
cd var/app/current/api-user
cat appsettings.json
配置 withappsettings.json
在Development
和本地正常工作Production
。为什么云环境不是这样?
解决方案
当您在本地运行时,VS 读取launchSettings.json
文件,其中ASPNETCORE_ENVIRONMENT
变量设置为正确的值(开发,生产)。
在云中运行时,环境变量不存在。我不能告诉你亚马逊,但是当你在 Azure 中运行时,你必须ASPNETCORE_ENVIRONMENT
在云中部署的应用程序的属性中进行设置(即这不是你的 VS 解决方案的一部分,而是部署的应用程序的一部分)。我猜亚马逊会有类似的东西和一个设置这个变量的地方。
如果您从 shell 运行 .net 应用程序(我真的不知道 beanstalk 是如何工作的),您应该设置 env 变量,例如
setx ASPNETCORE_ENVIRONMENT "Development"
或者您的外壳可以做到这一点。
推荐阅读
- angular - 了解顶层
和子模块 - django - 在发送 API 之前解码 JSON 数据
- ios - 如何在 Jenkins groovy 的 ssh 命令中 escpae 美元符号?
- tightvnc - 如何在嵌入 TightVNC 的 TightVNC 中退出全屏模式
- android - 使用jdbc驱动程序的android app sql server 2012连接
- java - 如何在 sdkman 中列出所有可用的 java 版本?
- html - 为什么从视图传递到 Django 模板时,空格后的列表元素会消失?
- rust - rust-analyzer 中的自定义 Cargo 命令“install-ra”从何而来?
- php - 如何将模型作为参数传递给控制器
- android - 使用 xml 时发生崩溃
kotlin 中的标记