18

我正在从一个空的 ASP.NET Core 2 模板创建一个新网站,并按照Microsoft Entity Framework 教程帮助我进行设置。在某一时刻,它让您添加代码:

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

ConfigureServices()方法Startup.csConfiguration我这样做了,但在我的项目 Visual Studio 中给了我下面的小红线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();
}
4

5 回答 5

42

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

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

public IConfiguration Configuration { get; }

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

于 2017-12-07T19:51:55.430 回答
4

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(); 
            });
        }
    }
于 2020-01-31T13:31:34.813 回答
2

有时,您会添加错误的命名空间(如 AutoMapper.Configuration)来代替正确的 Microsoft.Extensions.Configuration。

于 2020-06-17T05:27:37.583 回答
-1

不要忘记添加public IConfiguration Configuration { get; }

于 2020-05-28T10:27:07.077 回答
-1

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

builder.Configuration.GetConnectionString("DefaultConnection")));
于 2022-01-22T18:31:18.150 回答