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

时间:2016-09-19 21:56:38

标签: deployment asp.net-core

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

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

2 个答案:

答案 0 :(得分:1)

首先,请记住,

  

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

     

要在ASP.NET应用程序中使用设置,建议您仅在应用程序的Startup类中实例化Configuration。最简单的,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核心文档的“Configuration” chapter“Working with multiple environments” chapter中详细了解所有这些内容。

答案 1 :(得分:0)

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

  

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