Код: Выделить всё
Program.cs:Код: Выделить всё
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddHostedService();
Код: Выделить всё
CheckDatabaseHealthBackgroundService.cs:Код: Выделить всё
public sealed class CheckDatabaseHealthBackgroundService : BackgroundService, IDisposable
{
private readonly IServiceProvider _provider;
private readonly IJobUtility _jobUtility;
private readonly IVdcUnitOfWork _unitOfWork;
private readonly ICloudStackCoreConnectionFactory _connFactory;
private readonly IMemoryCache _cache;
private readonly ILogger _logger;
public CheckDatabaseHealthBackgroundService(
IServiceProvider provider,
IJobUtility jobUtility,
IVdcUnitOfWork unitOfWork,
ICloudStackCoreConnectionFactory connFactory,
IMemoryCache cache,
ILogger logger)
{
_provider = provider;
_jobUtility = jobUtility;
_unitOfWork = unitOfWork;
_connFactory = connFactory;
_cache = cache;
_logger = logger;
}
System.InvalidOperationException: ошибка при проверке службы дескриптор «ServiceType: Microsoft.Extensions.Hosting.IHostedService Срок службы: Singleton ImplementationType: CloudStackData.WebAPI.RefreshDiskTypeBackgroundService»: невозможно использовать ограниченную службу «Vdc.Libs.Data.IVdcUnitOfWork» из одноэлементного «Microsoft.Extensions.Hosting.IHostedService».
System.InvalidOperationException: невозможно использовать службу с ограниченной областью действия «Vdc.Libs.Data.IVdcUnitOfWork» из одноэлементного «Microsoft.Extensions.Hosting.IHostedService»
Прочитав об этой ошибке, я пришел к выводу, что мне следует добавить необходимые службы CheckDatabaseHealthBackgroundService как одноэлементные, без ограниченной области, и поэтому я попробовал:
Код: Выделить всё
Program.cs:Код: Выделить всё
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddHostedService();
System.InvalidOperationException: ошибка при проверке дескриптора службы 'ServiceType: Microsoft .Extensions.Hosting.IHostedService Время жизни: Singleton ImplementationType: CloudStackData.WebAPI.RefreshDiskTypeBackgroundService': невозможно использовать ограниченную службу "Vdc.Libs.Data.DbContextWrite" из одноэлементного "Vdc.Libs.Data.IVdcUnitOfWork".
И тут я начал застревать.
Код: Выделить всё
VdcUnitOfWorkКод: Выделить всё
public sealed class VdcUnitOfWork : EFDbUnitOfWork, IVdcUnitOfWork, IUnitOfWork, IDisposable, IDbContextWrapper
{
public VdcUnitOfWork(DbContextWrite dbContext)
: base(dbContext)
{
}
}
Код: Выделить всё
public abstract class DbContextWrite : DbContext
{
protected DbContextWrite([NotNull] DbContextOptions options)
: base(options)
{
}
}
Помощь?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -singleton