Asp.NET Core appsettings.json中是否有替代Web.config Transormations?
我想在从VS部署到staging.production服务器时更改连接字符串和其他设置。
答案 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
环境变量用于设置/确定当前环境。预定义的值为Development
,Staging
,Production
,但也可以是任何自定义。
假设您希望使用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