New .Net Core 2 Site does not reconize Configuration.GetConnectionString

I am creating a new web site from an empty ASP.NET Core 2 template and following the Microsoft Entity Framework Tutorial to help me get setup. At one point it has you add the code:

services.AddDbContext<SchoolContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

To the ConfigureServices() method of Startup.cs. I did this but in my project Visual Studio give me that little red line under Configuration in the Configuraiton.GetConnectionString

I had thought I was missing a using statement or even a package but the Visual Studio 2017 quick actions don't identify a using statement to use and I do have the Microsoft.AspNetCore.All package installed so I should have all the packages.

What am I missing that is making the Configuration not recognized?

Edit: The error is:

The name 'Configuration' does not exist in the current context

public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<CollectionContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
     services.AddMvc();
}

Solution 1:

You need to get the IConfiguration object via DI.
Add a IConfiguration argument to your Startup's constructor, and assign it to a Configuration property:

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

public IConfiguration Configuration { get; }

I'm surprised how you don't have it though, because it's part of the template.

Solution 2:

1# install the NuGet package: Microsoft.Extensions.Configuration
2# add: using Microsoft.Extensions.Configuration;
3# Note that i have added this line in the code: public IConfiguration Configuration { get; }

 public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers(); 
            });
        }
    }

Solution 3:

Sometimes you add the wrong namespace like AutoMapper.Configuration in place of the correct one Microsoft.Extensions.Configuration.