【问题标题】:Sharing / transforming appsettings across projects and environments跨项目和环境共享/转换应用程序设置
【发布时间】:2019-03-22 11:26:43
【问题描述】:

我得到了一个包含多个项目(函数应用和一个 Web API)的 Visual Studio 解决方案和一个在所有项目之间共享的数据层。我已经根据这篇文章设置了解决方案,因此所有项目都共享相同的配置 (appsettings.json):https://andrewlock.net/sharing-appsettings-json-configuration-files-between-projects-in-asp-net-core/

所有项目都基于 .net 核心。

我已经为开发环境设置了构建和发布管道。但我需要一个测试和生产环境。如何在将共享配置发布到测试和生产环境之前对其进行转换?

【问题讨论】:

    标签: azure asp.net-core azure-devops web-deployment


    【解决方案1】:

    你没有。这不是 ASP.NET Core 中配置的工作方式。配置被覆盖,而不是转换。如何应用不同的配置源有一个操作顺序,基本上就是它们注册的顺序。默认值为 JSON

    如果您需要配置因环境而异,您将依赖环境特定的 JSON 文件(用于常规配置)或环境变量和/或 Azure Key Vault 之类的东西(用于机密)。由于所有这些都在配置注册的后期出现,因此您在此处设置的任何值都将覆盖 appsettings.json 中的值。

    对于特定环境的 JSON,加载取决于 ASPNETCORE_ENVIRONMENT 的值,可以将其设置为环境变量或作为命令行参数 --environment 传递。在任何一种情况下,设置的值都对应于appsettings.{environment}.json{environment} 部分。换句话说,如果您将环境设置为Production,那么appsettings.Production.json 将被加载到配置中(如果存在)。环境变量与环境本身相关联,因此不依赖于任何特定的环境值。

    【讨论】:

    • 所以我需要为每个项目中的每个环境设置 appsettings 吗?我试图避免重复应用设置。
    • 我不确定您到底在做什么,但是让单独的应用程序共享通用设置开始引发一个问题,即这些应用程序是否应该是单独的应用程序。
    • 所有功能应用程序都是独立的项目+ web api,它们都依赖于一些存储库。因此,一旦部署,应用程序需要存在连接字符串等。
    • 看到这是一个完美的例子。如果所有应用程序都需要相同的连接字符串,那么您没有正确地抽象出您的数据依赖关系和/或您没有真正细分您的域。换句话说,你仍然有一个单体应用,只是分成不同的项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多