gpt4 book ai didi

asp.net-core-2.0 - 为每个环境部署不同的连接字符串

转载 作者:行者123 更新时间:2023-12-04 07:23:36 26 4
gpt4 key购买 nike

我正在尝试从 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 命令部分。

这让我可以为每个应用程序池设置不同的环境

最佳答案

该文档不适用于旧版本的 ASP.NET Core。那里的所有内容仍然适用,并且都已列出,因此我不确定困惑的确切来源。

以最简单的形式,您只需创建一个或多个 appsettings.{environment}.json文件。默认情况下,appsettings.json加载,首先,然后,如果存在,appsettings.{environment}.json加载与当前环境匹配的文件。这允许您覆盖主 appsettings.json 中的设置。文件,专门用于环境。但是,更好的方法是仅将不受环境影响的全局设置放在 appsettings.json 中。然后将所有特定于环境的设置留给特定于环境的文件。

无论如何,在任何一种情况下,当您部署应用程序时,所有设置文件都会被复制。 ASP.NET Core 项目不像旧的 ASP.NET 项目那样基于特定配置发布。这意味着相同的已发布文件可以部署在多个不同的环境中,而无需重新发布。

运行时使用的环境由 ASPNETCORE_ENVIRONMENT 的值决定环境变量。只需在服务器上设置它应该是什么,你就可以开始了。

如果您在 IIS 后面运行,则需要再执行一步。默认情况下,应用程序池不会加载到环境变量中。您可以通过在 IIS 中编辑应用程序池的高级属性并将“加载用户配置文件”设置更改为 true 来更改此设置。 .

关于asp.net-core-2.0 - 为每个环境部署不同的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47592335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com