我已经在我appsettings.json的数据库连接字符串,webapi位置等内容中定义了一些值,这些值对于开发,登台和实时环境是不同的.
有没有办法有多个appsettings.json文件(如appsettings.live.json,等等),并让asp.net应用程序'知道'根据它运行的构建配置使用哪一个?
我有问题.我需要在.Net Core(C#)中编写一个使用app.config的程序,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="custom" type="ConfigurationSample.CustomConfigurationSection, ConfigurationSample"/>
</configSections>
<connectionStrings>
<add name="sampleDatabase" connectionString="Data Source=localhost\SQLExpress;Initial Catalog=SampleDatabase;Integrated Security=True"/>
</connectionStrings>
<appSettings>
<add key="sampleApplication" value="Configuration Sample"/>
</appSettings>
<custom>
<customConfigurations>
<add key="customSample" name="Mickey Mouse" age="83"/>
</customConfigurations>
</custom>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我写道:
string connectionString = ConfigurationManager.ConnectionStrings["sampleDatabase"].ConnectionString;
Console.WriteLine(connectionString);
// read appSettings configuration
string appSettingValue = ConfigurationManager.AppSettings["sampleApplication"];
Console.WriteLine(appSettingValue);
Run Code Online (Sandbox Code Playgroud)
它是来自互联网的例子,所以我认为会工作,但我得到例外:
System.Configuration.ConfigurationErrorsException: 'Error Initializing the configuration system.'
Inner Exception
TypeLoadException: Could not load type 'System.Configuration.InternalConfigurationHost' from assembly 'CoreCompat.System.Configuration, Version=4.2.3.0, Culture=neutral, PublicKeyToken=null' because the method 'get_bundled_machine_config' has no implementation …Run Code Online (Sandbox Code Playgroud) ASP.NET Core文档建议我们应该使用appsettings.json文件以及每个环境的文件,其中应包含覆盖的值。问题是所有这些文件都已发布,尽管只有appsettings.json和appsettings。[Environment] .json是相关的。另一个问题是要更改服务器上的配置值,必须检查两个文件:基本文件和特定于环境的文件。
所以我的问题是:在每个部署环境中拥有一个配置文件的最干净方法是什么?