System.AggregateException при запуске program.cs в .NET 8.0C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.AggregateException при запуске program.cs в .NET 8.0

Сообщение Anonymous »

Я пытаюсь реализовать фоновую службу электронной почты на основе IHostedService.
Но получаю следующую ошибку:

System.AggregateException: «Некоторые службы невозможно создать (ошибка при проверке дескриптора службы» ServiceType: Business.Abstract.ICustomerService Lifetime: Scoped ImplementationType: Business.Concrete.CustomerManager»: невозможно разрешить службу для введите «DataAccess.Concrete.EntityFramework.SqlContext» при попытке активировать «DataAccess.Concrete.EntityFramework.EfCustomerDal».) (Ошибка при проверке дескриптора службы «ServiceType: DataAccess.Abstract.ICustomerDal) Срок службы: ограниченная область реализации Тип реализации: DataAccess.Concrete.EntityFramework .EfCustomerDal»: невозможно разрешить службу для типа «DataAccess.Concrete.EntityFramework.SqlContext» при попытке активировать «DataAccess.Concrete.EntityFramework.EfCustomerDal».) (Ошибка при проверке дескриптора службы «ServiceType: Microsoft.Extensions.Hosting. Время жизни IHostedService: Singleton ImplementationType: KodiksProject.API.Services.EmailBackgroundService': невозможно разрешить службу для типа Business.Concrete.CustomerManager при попытке активировать KodiksProject.API.Services.EmailBackgroundService'.)'

Как решить эту проблему?

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

ICustomerService:
public interface ICustomerService
{
IResult Add(Customer customer);
IResult Update(Customer customer);
IResult Delete(int id);
IDataResult Get(int id);
IDataResult GetAll();
Task SendEmailsToCustomersAsync();
}

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

CustomerManager:
public class CustomerManager : ICustomerService
{
ICustomerDal _customerDal;
private readonly IEmailService _emailService;

public CustomerManager(ICustomerDal customerDal, IEmailService emailService)
{
_customerDal = customerDal;
_emailService = emailService;
}

public IResult Add(Customer customer)
{
_customerDal.Add(customer);
return new SuccessResult();
}

public IResult Delete(int id)
{
_customerDal.Delete(id);
return new SuccessResult();
}

public IDataResult Get(int id)
{
return new SuccessDataResult(_customerDal.Get(c => c.CustomerId == id));
}

public IDataResult GetAll()
{
return new SuccessDataResult(_customerDal.GetAll());
}

public IResult Update(Customer customer)
{
_customerDal.Update(customer);
return new SuccessResult();
}

public async Task SendEmailsToCustomersAsync()
{
var customerEmails = await _customerDal.GetAllCustomerEmailsAsync();
var tasks = new List();

foreach (var email in customerEmails)
{
var task = _emailService.SendEmailAsync(email, "asdasas", "asasadasdasd");
tasks.Add(task);
}

await Task.WhenAll(tasks);
}
}

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

SqlContext:
public class SqlContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"my connection string");
}

public DbSet Customers { get; set; }
public DbSet Orders { get; set; }
public DbSet
 Products { get; set; }
}

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

EfCustomerDal:
public class EfCustomerDal : EfEntityRepositoryBase, ICustomerDal
{
private readonly SqlContext _context;

public EfCustomerDal(SqlContext context)
{
_context = context;
}

public async Task GetAllCustomerEmailsAsync()
{
var emails = await _context.Customers
.Select(c => c.Email)
.ToListAsync();

return emails;
}
}

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

ICustomerDal:
public interface ICustomerDal : IEntityRepository
{
Task GetAllCustomerEmailsAsync();
}

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

EmailService:
public class EmailService : IEmailService
{
private readonly SmtpClient _smtpClient;

public EmailService()
{
_smtpClient = new SmtpClient("server")
{
Port = 465,
Credentials = new NetworkCredential("username", "password"),
EnableSsl = true,
};
}

public async Task SendEmailAsync(string to, string subject, string body)
{
var mailMessage = new MailMessage("username", to, subject, body);
await _smtpClient.SendMailAsync(mailMessage);
}
}
Я перепробовал все, но не смог решить эту проблему. Это сработало до того, как я попытался отправить электронные письма с помощью фонового работника. Я не вижу никаких проблем с внедрением зависимостей или сроком службы.
Я застрял здесь и не знаю, что делать.
Можете ли вы мне помочь в этой ситуации?


Подробнее здесь: https://stackoverflow.com/questions/786 ... on-net-8-0
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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