使用.NET Core 2.0
问题: 如果您使用包含名为“Urls”的json对象的json配置文件,并让Startup类构造函数接受IConfiguration参数,则会引发错误:
已添加具有相同键的项目。
如果您将密钥名称更改为其他任何内容,则错误消失。 同样奇怪的是,您可以在配置文件中包含重复的密钥(它们会被覆盖),但由于某些原因,“Urls”尤其会导致此错误。
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"
}
}