Новый сайт.Net Core 2 не восстанавливает Configuration.GetConnectionString

Я создаю новый веб-сайт из пустого шаблона ASP.NET Core 2 и следую учебному руководству Microsoft Entity Framework, чтобы помочь мне выполнить настройку. В какой-то момент он добавляет код:

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

К ConfigureServices() метод Startup.cs, Я сделал это, но в моем проекте Visual Studio дал мне эту маленькую красную линию под Configuration в Configuraiton.GetConnectionString

Я думал, что мне не хватает using заявление или даже пакет, но быстрые действия Visual Studio 2017 не идентифицируют using заявление, чтобы использовать, и у меня есть Microsoft.AspNetCore.All пакет установлен, поэтому у меня должны быть все пакеты.

Что мне не хватает, что делает Configuration не опознано?

Редактировать: ошибка:

Имя "Конфигурация" не существует в текущем контексте

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

5 ответов

Решение

Вам нужно получить IConfiguration объект через DI.
Добавить IConfiguration аргумент вашей Startupконструктор, и назначить его Configuration имущество:

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

public IConfiguration Configuration { get; }

Я удивлен тем, что у вас его нет, потому что это часть шаблона.

1# установить пакет NuGet: Microsoft.Extensions.Configuration
2# добавить: using Microsoft.Extensions.Configuration;
3# Обратите внимание, что я добавил в код эту строку: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(); 
            });
        }
    }

Иногда вы добавляете неправильное пространство имен, например AutoMapper.Configuration, вместо правильного Microsoft.Extensions.Configuration.

Не забудьте добавить public IConfiguration Configuration { get; }

если вы используете asp .net core mvc 5.0, то в program.cs просто напишите так

      builder.Configuration.GetConnectionString("DefaultConnection")));
Другие вопросы по тегам