【问题标题】:Is there an alternate to Web.config Transormations in Asp.NET Core appsettings.json?Asp.NET Core appsettings.json 中的 Web.config 转换是否有替代方案?
【发布时间】:2016-09-19 21:56:37
【问题描述】:

在 Asp.NET Core appsettings.json 中是否有 Web.config Transormations 的替代方案?

我想在从 VS 部署到 staging.production 服务器时更改连接字符串和其他设置。

【问题讨论】:

    标签: deployment asp.net-core


    【解决方案1】:

    首先,请记住,

    ASP.NET Core 的配置系统是从以前版本的 ASP.NET 重新构建的,它依赖于System.Configuration 和 web.config 等 XML 配置文件。新的配置模型提供了对基于键/值的设置的简化访问,这些设置可以从各种来源中检索。

    要使用 ASP.NET 应用程序中的设置,建议您仅在应用程序的 Startup 类中实例化配置。简而言之,Configuration 只是源的集合,提供了读取和写入名称/值对的能力。

    ASP.NET Core 提供对 JSON、XML 和 INI 配置文件作为源的内置支持,并允许根据当前环境选择源。 ASPNETCORE_ENVIRONMENT 环境变量用于设置/确定当前环境。预定义值为DevelopmentStagingProduction,但也可以是任何自定义值。

    假设您想使用 JSON 文件(命名为 appsettings.json 用于约定)来存储连接字符串。您需要做的是创建一个单独的 appsettings.{EnvironmentName}.json 文件(对于您拥有的每个环境),例如:

    • appsettings.Development.json
    • appsettings.Staging.json
    • appsettings.Production.json

    并根据环境加载其中一个:

    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
    

    在 ASP.NET Core 文档的 “Configuration” chapter“Working with multiple environments” chapter 中阅读有关所有这些的更多信息。

    【讨论】:

    • 谢谢,但请看我上面的评论。
    【解决方案2】:

    是的,您必须在目标系统上使用环境变量。

    ASP.NET Core 引用一个特定的环境变量 ASPNETCORE_ENVIRONMENT 来描述应用程序当前运行的环境。这个变量可以设置为您喜欢的任何值,但按照惯例使用三个值:开发、暂存和生产.您将在 ASP.NET Core 提供的示例和模板中找到这些值。

    在运行时确定环境

    IHostingEnvironment 服务提供用于处理环境的核心抽象。该服务由 ASP.NET 托管层提供,可以通过依赖注入注入到您的启动逻辑中。 Visual Studio 中的 ASP.NET Core 网站模板使用此方法来加载特定于环境的配置文件(如果存在)并自定义应用程序的错误处理设置。在这两种情况下,此行为都是通过在传递给适当方法的 IHostingEnvironment 实例上调用 EnvironmentName 或 IsEnvironment 来引用当前指定的环境来实现的。

    https://docs.asp.net/en/latest/fundamentals/environments.html

    【讨论】:

    • 嗯,我知道这种方法,但与 web.config 转换相比,它有些不同。这不会产生一个配置文件,但您必须将两者都上传到目标环境。我的意思是两个,一个具有“共享”设置“application.json”,一个具有特定于环境的“application.staging.json”。
    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2017-02-03
    • 2019-07-27
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    相关资源
    最近更新 更多