是否有替代Web。配置Asp中的转换。. NET Core appsettings.json?
我想在部署到登台时更改连接字符串和其他设置。
首先,请记住,
ASP。. NET Core的配置系统已经从以前的ASP版本中重新构建。它依赖于
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
并相应地加载其中一个到environment:
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
在ASP. net的"配置"一章和"使用多个环境"一章中阅读更多关于这一切的内容。
是的,您必须在目标系统上使用环境变量。
https://docs.asp.net/en/latest/fundamentals/environments.htmlASP。. NET Core引用一个特定的环境变量ASPNETCORE_ENVIRONMENT来描述应用程序当前运行的环境。该变量可以设置为您喜欢的任何值,但是按照惯例使用三个值:Development、Staging和Production。您可以在ASP提供的示例和模板中找到这些值。网络核心。
确定运行时的环境
IHostingEnvironment服务提供了处理环境的核心抽象。该服务由ASP提供。. NET托管层,并且可以通过依赖注入注入到启动逻辑中。ASP。Visual Studio中的。NET Core网站模板使用这种方法来加载特定于环境的配置文件(如果存在的话),并自定义应用程序的错误处理设置。在这两种情况下,通过调用传入适当方法的IHostingEnvironment实例上的EnvironmentName或IsEnvironment来引用当前指定的环境,从而实现此行为。