【发布时间】:2017-12-01 11:22:52
【问题描述】:
我正在尝试从 mac 在 IIS 上部署一个 asp.net core 2.0 api 项目。
我想做的是为我的开发、暂存和生产环境设置不同的 appsettings.json 文件,然后使用 dotnet -build 作为我的部署脚本的一部分调用不同的环境。
我查看了https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments,它适用于旧版本的 .net 核心,但我无法理解我需要做什么。我不想为操作系统设置环境,而是以编程方式设置它(因为我的登台和生产环境适用于同一台服务器)
我有一个 appsettings.Development.json 文件,当我运行我的应用程序时会使用它,但是当我只是将环境变量设置为构建命令的一部分时,我似乎无法加载我的 appsettings.Production.json 文件。
bash$ ASPNETCORE_ENVIRONMENT=Production dotnet run
Using launch settings from /Properties/launchSettings.json...
Hosting environment: Development
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
最终,我尝试根据我构建的环境部署特定的连接字符串。有没有更好的方法来做到这一点?
更新
@Chris 在下面的回答有所帮助,此外我还发现了以下内容:
每个 IIS 应用程序池 如果您需要为在独立应用程序池中运行的单个应用程序设置环境变量(在 IIS 10.0+ 上受支持),请参阅 IIS 参考文档中环境变量主题的 AppCmd.exe 命令部分。
这让我可以为每个应用程序池设置不同的环境
【问题讨论】:
-
展示你如何处理代码中的
appsettings.{environment}.json文件 -
@Set 完全正确。您需要
appsettings.production.json用于生产,appsettings.staging.json用于暂存,appsettings.development.json用于开发。要记住的一件事是,如果没有找到其他 appsettings 文件,则使用appsettings.json。 -
@JamieTaylor:
appsettings.json总是被使用。特定于环境的文件只是覆盖。 -
@ChrisPratt 确实。
-
我现在了解环境特定的 appsettings 文件,但需要找到一种设置环境的方法。我无法在服务器上设置环境变量,因为服务器同时运行暂存和生产
标签: asp.net-core-2.0 asp.net-core-configuration