ASP.NET Core web service does not load appsettings.json into configuration

For others like me who find this issue:

It might be that you're not copying the appsettings.json file during build.

The OP does say he's doing this, but it's kind of a small print thing - and was what I was failing to do.

The more you know ...


Another approach, would be to manually create the configuration via ConfigurationBuilder then use the UseConfiguration method.

var configuration = new ConfigurationBuilder()
     .SetBasePath(Directory.GetCurrentDirectory())
     .AddJsonFile("appsettings.json", false, true)
     .Build();

var host = new WebHostBuilder()
     .UseConfiguration(configuration)
     .UseKestrel()
     .UseStartup<Startup>();

The primary intent is core to provide a bit of flexibility when implementing, they often error on less is more. You have to explicitly say what you would like, that way the pipeline remains relatively small.


WebHostBuilder doesn't load appsettings.json by default, you need to manually call AddJsonFile. For example:

return new WebHostBuilder()
            .UseKestrel(opt =>
            {
                //snip
            })
            .ConfigureAppConfiguration((builderContext, config) =>
            {
                config.AddJsonFile("appsettings.json", optional: false);
            })
            .ConfigureServices(
                services => services
                    .AddSingleton<StatelessServiceContext>(serviceContext))
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseStartup<Startup>()
            .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
            .UseUrls(url)
            .Build();

Alternatively you can use WebHost.CreateDefaultBuilder which will load more defaults.