新的 .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.cs
的ConfigureServices()
方法。我这样做了,但在我的项目中 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")));
我正在使用一个空的 ASP.NET 核心 2 模板创建一个新网站,并按照 Microsoft Entity Framework Tutorial 帮助我进行设置。有一次它让您添加代码:
services.AddDbContext<SchoolContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
到Startup.cs
的ConfigureServices()
方法。我这样做了,但在我的项目中 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")));