ASP.NET Core 2.1依赖注入;无法注入服务等级

时间:2019-05-22 13:18:43

标签: c# asp.net-core dependency-injection

我正在使用ASP.NET Core 2.1构建Web API。我有用户可以通过HTTP请求访问的控制器。然后,控制器调用服务类。我试图将DbContext注入到自定义服务类中,但是每当这样做时,我都会从服务器获得响应500。在我的启动课程中,我有

services.AddDbContext<CatalogueContext>(options => options.UseSqlServer(_config.GetConnectionString("DefaultConnection")));

如果我将这样放在控制器类中,一切正常

private readonly ITrackServices _service;
private readonly CatalogueContext _dbContext;

public TrackController(ITrackServices service, CatalogueContext dbContext)
{
  _service = service;
  _dbContext = dbContext;
}

但是我不想将dbContext注入控制器。如果我从控制器中删除该注入并尝试在服务类中尝试相同的操作

private readonly CatalogueContext _dbContext;

public TrackService(CatalogueContext dbContext)
{
  _dbContext = dbContext;
}

它不起作用。因此,当我尝试访问使用TrackService的端点时,都会从服务器获得500。

TrackService被注册为单例:

services.AddSingleton<ITrackServices, TrackService>();

我不知道我在做什么错。我应该在TrackService上实现一些接口以启用依赖项注入吗?

1 个答案:

答案 0 :(得分:1)

您还需要注册服务:

services.AddScoped<ITrackService, TrackService>();

是否使用瞬态,作用域或单例取决于服务依赖项的有效期。它不应该依赖寿命较短的服务。