【发布时间】:2020-07-05 11:02:59
【问题描述】:
我有一个 ASP.NET Core 应用程序 (.NET Core 2.1)。我使用 Visual Studio 发布(VS2019 -> 项目上的人民币 -> 发布)。服务器在 Windows Server 2019 Standard 上运行,并安装了 IIS。
目前服务器上有三个应用程序实例。一个暂存实例和两个生产实例。对于配置,我使用ASPNETCORE_ENVIRONMENT 变量,该变量使用<EnivronmentName> 在每个发布配置文件中设置(所以我有两个配置文件<EnivronmentName>Production</EnivronmentName> 和一个<EnivronmentName>Staging</EnivronmentName>)。
我需要这些环境变量来管理电子邮件发送:我需要它为两个生产实例工作,但不适用于暂存实例。
现在让我更接近这个问题。我需要根据实例修改这些电子邮件(只是一点点):假设生产实例 A 我需要电子邮件主题为 Instance A,用于生产实例 B 我需要它是 Instance B。
在我看来,这应该通过发布配置文件进行配置,因为发布配置文件使一个实例与另一个实例不同,这似乎是合乎逻辑的。所以我试图找到一种方法将发布配置文件名称或其他环境变量传递给 Startup.cs 但没有成功。
如果发布过程保持不变,那将是完美的,但任何帮助/解决方案都非常感谢!
提前致谢!
【问题讨论】:
-
如何在同一台机器上为同一个环境变量获取两个不同的值?
-
您需要为每个实例有不同的配置文件,并在其中包含特定于实例的值,并在代码中读取并使用它们
-
@Crowcoder 正如我之前提到的,我在每个发布配置文件中设置了环境名称。据我了解,它会影响 IIS 管理器中的站点配置
-
@ChetanRanpariya 但是如何根据实例解析配置文件?如果我能做到这一点,我根本不需要新的配置文件——我只会在我的代码中使用实例特定的信息。
-
@wunderwaffle 发布必须在做某事,我正在寻找对它更改 web.config 的引用。无论如何,当您的发布需求超出 VS 的能力时,可能是时候迁移到合适的 DevOps 系统了,例如 Octopus 或 Azure DevOps、Jenkins 等。
标签: c# asp.net-core