使用.NET Core 2.0
问题:
如果使用包含名为“url”的json对象的json配置文件,并让启动类构造函数接受iconfiguration参数,则会引发错误:
已添加具有相同密钥的项。
如果将密钥名称更改为其他名称,则错误将消失。
另一个奇怪的是,允许在配置文件中有重复的键(它们会覆盖),但是由于某些原因,“url”特别导致了这个错误。
public static class Program
{
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.AddJsonFile("config.json", optional: false, reloadOnChange: true)
.Build();
BuildWebHost(args, config).Run();
}
public static IWebHost BuildWebHost(string[] args, IConfiguration config) =>
CreateBasicBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.Build();
public static IWebHostBuilder CreateBasicBuilder(string[] args)
{
var builder = new WebHostBuilder();
if (string.IsNullOrEmpty(builder.GetSetting(WebHostDefaults.ContentRootKey)))
{
builder.UseContentRoot(Directory.GetCurrentDirectory());
}
builder.UseKestrel()
.UseIISIntegration()
.UseDefaultServiceProvider((context, options) =>
{
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
});
return builder;
}
}
public class Startup
{
private readonly IHostingEnvironment _env;
private readonly IConfiguration _config;
public Startup(IConfiguration config, IHostingEnvironment env)
{
_env = env;
_config = config;
}
//other startup code below...
}
这里是config.json:
{
"Urls": {
"MyUrl": "https://test.com"
}
}