真正的诀窍是,大多数旧的应用程序没有一个根来检索配置,因此您必须重构应用程序以利用灵活的配置系统。对于暂存/生产环境,您可能仍然希望使用web.config中的配置。下面的代码可以为您提供一种构造它的基本方法:
public class MyApplicationConfiguration
{
public string MainConnectionString { get; set; }
}
public class ConfigurationRetriever
{
public MyApplicationConfiguration GetConfiguration()
{
// You might look for the absence or presence of an environment variable to determine this
bool isLocalDevelopment = IsApplicationLocalDevelopment();
var config = new MyApplicationConfiguration();
if(isLocalDevelopment)
{
config.MainConnectionString = Environment.GetEnvironmentVariable("MyApplication_MainConnectionString");
//or get it from a JSON file or XML file or config database
}
else
{
config.MainConnectionString = ConfigurationManager.ConnectionStrings["MainConnectionString"].ConnectionString;
}
}
}
与其滚动自己的配置构建逻辑,不如重构应用程序以利用
Microsoft.Extensions.Configuration
. 它不仅仅适用于.NET内核。它适用于.NET标准。因此,您甚至可以在旧的ASP.NET应用程序中使用它。要读取web.config,您可能需要使用Microsoft.Extensions.Configuration.Xml。或者您可以编写自己的适配器,从ConfigurationManager中提取值。我做了一个基本的测试,结果和预期的一样。