Новый сайт.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")));