新的 .Net Core 2 站点无法识别 Configuration.GetConnectionString

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

我正在使用一个空的 ASP.NET 核心 2 模板创建一个新网站,并按照 Microsoft Entity Framework Tutorial 帮助我进行设置。有一次它让您添加代码:

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

Startup.csConfigureServices()方法。我这样做了,但在我的项目中 Visual Studio 给我 Configuraiton.GetConnectionString

Configuration 下的那条小红线

我原以为我遗漏了 using 语句甚至一个包,但 Visual Studio 2017 快速操作没有识别要使用的 using 语句,我确实有Microsoft.AspNetCore.All 安装包所以我应该有所有的包。

我错过了什么导致 Configuration 无法识别?

编辑:错误是:

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();
}

您需要通过 DI 获取 IConfiguration 对象。
IConfiguration 参数添加到 Startup 的构造函数,并将其分配给 Configuration 属性:

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

public IConfiguration Configuration { get; }

我很惊讶你怎么没有它,因为它是模板的一部分。

1# 安装 NuGet 包:Microsoft.Extensions.Configuration
2# 添加:使用 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(); 
            });
        }
    }

别忘了加上public IConfiguration Configuration { get; }

有时您会添加错误的命名空间,例如 AutoMapper.Configuration,而不是正确的 Microsoft.Extensions.Configuration。

如果您使用的是 asp .net core mvc 5.0,那么在 program.cs 就这样写吧

builder.Configuration.GetConnectionString("DefaultConnection")));