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

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

Сообщение Anonymous »

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

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

System.AggregateException: 'Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Business.Abstract.ICustomerService Lifetime: Scoped ImplementationType: Business.Concrete.CustomerManager': Unable to resolve service for type 'DataAccess.Concrete.EntityFramework.SqlContext' while attempting to activate 'DataAccess.Concrete.EntityFramework.EfCustomerDal'.) (Error while validating the service descriptor 'ServiceType: DataAccess.Abstract.ICustomerDal Lifetime: Scoped ImplementationType: DataAccess.Concrete.EntityFramework.EfCustomerDal': Unable to resolve service for type 'DataAccess.Concrete.EntityFramework.SqlContext' while attempting to activate 'DataAccess.Concrete.EntityFramework.EfCustomerDal'.) (Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: KodiksProject.API.Services.EmailBackgroundService': Unable to resolve service for type 'Business.Concrete.CustomerManager' while attempting to activate '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();
}
Менеджер по работе с клиентами

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

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();
}
Почтовая служба

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

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 ... ersion-8-0
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • System.AggregateException при запуске program.cs в .NET 8.0
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Метод не найден: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)
    Anonymous » » в форуме C#
    0 Ответы
    142 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • System.AggregateException: «Некоторые службы невозможно создать (ошибка при проверке дескриптора службы» ServiceType:
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

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