繁体   English   中英

如何配置 ASP.NET 内核为两个部署的应用程序具有不同的配置

[英]How to configure ASP.NET Core to have different configurations for two deployed applications

我一直在学习 ASP.NET 环境变量和配置。

我看到,默认情况下,在我自己的本地环境中运行时, appsettings.Development.json中的任何设置都将覆盖appsettings.json中的相同设置。 并且appsettings.Development.json未部署,因此在部署时不会覆盖任何设置。

我的问题:有没有人知道一种方法可以为多个部署的配置使用相同的机制?

例如,我有一个网站和该网站的演示版。 两者都使用相同的代码库,但演示站点的一些设置需要不同。 如果我可以创建appsettings.Demo.json并在其中放置需要仅为演示站点覆盖的任何设置,那就太好了。

目前,我只是在文件中设置了IsDemoSite设置。 这可行,但如果我可以有不同的配置设置,它会更加优雅。

我找不到任何关于部署时具有不同配置的文档。

此外,其中一个区别是演示站点使用不同的数据库连接字符串。 所以我需要能够在运行迁移等时设置我正在处理的版本。

好吧,我也有同样的事情要做 - 你的自定义 appsettings 文件已经步入正轨。

就我而言,我想要一个单独的开发、生产、wsl 和 docker 配置。 解决方案 - 鉴于我在单独的虚拟实例上运行 prod 和 dev,是使用旧的和真正的ASPNETCORE_ENVIRONMENT变量。

我创建了所需的appsettings变体(appsettings.docker 等)并为给定文件设置了上述变量。

此外,当我的应用程序启动时,它会获取正确文件的路径(部分名称取自ASPNETCORE_ENVIRONMENT )并将其作为普通 json 文件加载到.ConfigureAppConfigurationCreateHostBuilder方法。 它非常适合我的要求 - 应该对你有好处。

您可以在此处找到示例。

至于设置ASPNETCORE_ENVIRONMENT - 取决于您所在的主机系统:

  • 适用于 docker
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=publish /app .
ENV ASPNETCORE_ENVIRONMENT="docker"
ENTRYPOINT ["dotnet", "ScanApp.dll"]
  • 对于 Windows:
    遵循指南 - 它将引导您完成全局和应用内设置

  • 对于 WSL - 在您的launchSettings.json中:

"WSL": {
      "commandName": "WSL2",
      "launchBrowser": true,
      "launchUrl": "https://localhost:5051",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "wsl",
        "ASPNETCORE_URLS": "https://localhost:5051;http://localhost:5050"
      },
      "distributionName": "Ubuntu-20.04"
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM