Некоторые службы невозможно создать в рабочей службе .NET 8.C#

Место общения программистов C#
Ответить
Anonymous
 Некоторые службы невозможно создать в рабочей службе .NET 8.

Сообщение Anonymous »

Это моя программа.cs:

Код: Выделить всё

var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSingleton();

// Ensure cMain is constructed before using it to get the connection string
var serviceProvider = builder.Services.BuildServiceProvider();
var cMainInstance = serviceProvider.GetRequiredService();
var connectionString = cMainInstance.ConnectionString;

// Register the DbContext with the correct connection string
builder.Services.AddDbContext(options => options.UseSqlServer(connectionString));
builder.Services.AddScoped();
builder.Services.AddHostedService();

var host = builder.Build();

host.Run();
Это мои UnitOfWork и IUnitOfWork:

Код: Выделить всё

public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _db;

public UnitOfWork(ApplicationDbContext db)
{
_db = db;
BreadCrumbs = new BreadCrumbRepository(_db);
}

public IBreadCrumbRepository BreadCrumbs { get; private set; }

public void Save()
{
_db.SaveChanges();
}
}

Код: Выделить всё

public interface IUnitOfWork
{
IBreadCrumbRepository BreadCrumbs { get; }
void Save();
}
Я пытаюсь внедрить IUnitOfWork в работника и получаю следующую ошибку:

Код: Выделить всё

public class Worker : BackgroundService
{
private readonly ILogger _logger;
private readonly cMain _cmain;
private readonly IConfiguration _configuration;
private readonly IUnitOfWork _uow;

public Worker()
{
}

public Worker(ILogger logger, IConfiguration configuration, IUnitOfWork uow)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
_uow = uow ?? throw new ArgumentNullException(nameof(uow));
_cmain = new cMain(_configuration);
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var breadCrumb = new BreadCrumb
{
Application = Assembly.GetExecutingAssembly().GetName().Name,
DateTime = DateTime.Now,
Description = "Test",
EnquiryHeader_ID = 1,
EventName = "Test",
ReferenceID = 1,
Result = "Test"
};

//await _uow.BreadCrumbs.AddAsync(breadCrumb);

if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
await Task.Delay(1000, stoppingToken);
}
}
}
Я получаю следующую ошибку.

Выброшено исключение: «System.AggregateException» в Microsoft.Extensions.DependencyInjection. .dll

Некоторые службы невозможно создать.
Если есть обработчик этого исключения, программу можно безопасно продолжить.
Я был бы очень признателен, если бы я указал, где я ошибся или чего мне не хватает.
Я ожидал, что приложение запустится и будет использовать IUnitOfWork в рабочем процессе сорт. Когда я удаляю DI, он запускается.

Подробнее здесь: https://stackoverflow.com/questions/793 ... er-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»