При запуске приложение asp .net появляется ошибка, в чем может быть причина?

Ссылка скопирована
1 ответ

После регистрации Microsoft.AspNetCore.Identity.EntityFrameworkCore возникает ошибка, которую не могу исправить.
При запуске программы получаю вот такую ошибку:

System.AggregateException: "Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: BulkyBook.DataAccess.Repository.IRepository.IUnitOfWork Lifetime: Singleton ImplementationType: BulkyBook.DataAccess.Repository.UnitOfWork': Unable to resolve service for type 'BulkyBook.DataAccess.ApplicationDbContext' while attempting to activate 'BulkyBook.DataAccess.Repository.UnitOfWork'.)"

System.AggregateException: "Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: BulkyBook.DataAccess.Repository.IRepository.IUnitOfWork Lifetime: Singleton ImplementationType: BulkyBook.DataAccess.Repository.UnitOfWork': Unable to resolve service for type 'BulkyBook.DataAccess.ApplicationDbContext' while attempting to activate 'BulkyBook.DataAccess.Repository.UnitOfWork'.)"

мой код:

builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(     builder.Configuration.GetConnectionString("DefaultConnections")     ));  builder.Services.AddDefaultIdentity<IdentityUser>()     .AddEntityFrameworkStores<ApplicationDbContext>();  builder.Services.AddScoped<IUnitOfWork, UnitOfWork>(); var app = builder.Build();

builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer( builder.Configuration.GetConnectionString("DefaultConnections") )); builder.Services.AddDefaultIdentity<IdentityUser>() .AddEntityFrameworkStores<ApplicationDbContext>(); builder.Services.AddScoped<IUnitOfWork, UnitOfWork>(); var app = builder.Build();

Подскажите пожалуйста

Дополнительно:

Запрещено текстовую информацию прикладывать в виде картинок.

  • Василий Банников,
    System.AggregateException: "Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: BulkyBook.DataAccess.Repository.IRepository.IUnitOfWork Lifetime: Singleton ImplementationType: BulkyBook.DataAccess.Repository.UnitOfWork': Unable to resolve service for type 'BulkyBook.DataAccess.ApplicationDbContext' while attempting to activate 'BulkyBook.DataAccess.Repository.UnitOfWork'.)"

    System.AggregateException: "Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: BulkyBook.DataAccess.Repository.IRepository.IUnitOfWork Lifetime: Singleton ImplementationType: BulkyBook.DataAccess.Repository.UnitOfWork': Unable to resolve service for type 'BulkyBook.DataAccess.ApplicationDbContext' while attempting to activate 'BulkyBook.DataAccess.Repository.UnitOfWork'.)"

  • Василий Банников, изменил
  • Покажи, код класса UnitOfWork и ApplicationDbContext
  • laravel_creative_3103, код ещё покажи
  • public class UnitOfWork : IUnitOfWork     {         private ApplicationDbContext _db;         public ICategoryRepository Category { get; private set; }          public ICoverTypeRepository CoverType { get; private set; }          public IProductRepository Product { get; private set; }          public UnitOfWork(ApplicationDbContext db)         {             _db = db;             Category = new CategoryRepository(_db);             CoverType= new CoverTypeRepository(_db);             Product = new ProductRepository(_db);         }           public void Save()         {             _db.SaveChanges();         }     }

    public class UnitOfWork : IUnitOfWork { private ApplicationDbContext _db; public ICategoryRepository Category { get; private set; } public ICoverTypeRepository CoverType { get; private set; } public IProductRepository Product { get; private set; } public UnitOfWork(ApplicationDbContext db) { _db = db; Category = new CategoryRepository(_db); CoverType= new CoverTypeRepository(_db); Product = new ProductRepository(_db); } public void Save() { _db.SaveChanges(); } }

    public class ApplicationDbContext : IdentityDbContext     {         public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }         public DbSet<Category> Categories { get; set; }         public DbSet<CoverType> CoverTypes { get; set; }         public DbSet<Product> Products { get; set; }     }

    public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Category> Categories { get; set; } public DbSet<CoverType> CoverTypes { get; set; } public DbSet<Product> Products { get; set; } }

  • Василий Банников, так лучше?
  • А если убрать identity и этот unit of work, то получится зарезолвить ApplicationDbContext (через GetRequiredService например)?
  • Василий Банников, что то не сходится
  • Регистрируйте свой сервис через AddTransient

    upd:
    Проект из нескольких модулей, при добавлении пакета Identity, создался еще один класс с именем ApplicationDbContext, что и привело к ошибке DI

    • та же самая проблема

      При запуске приложение asp .net появляется ошибка, в чем может быть причина?

    • laravel_creative_3103, объявления классов покажите
    • laravel_creative_3103, смотрю ошибку в вопросе, текстом, там почему IUnitWork как singlton объявлен?
    • Роман, пытался как scoped, transient и singleton
      ни один не решил проблему
    • Роман, какого класса именно?
    • Дбконтекста и iunitofwork, объявления и конструкторы, поля и методы не надо
    • public class ApplicationDbContext : IdentityDbContext     {         public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }         public DbSet<Category> Categories { get; set; }         public DbSet<CoverType> CoverTypes { get; set; }         public DbSet<Product> Products { get; set; }     }

      public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Category> Categories { get; set; } public DbSet<CoverType> CoverTypes { get; set; } public DbSet<Product> Products { get; set; } }

      public interface IUnitOfWork     {         ICategoryRepository Category { get; }         ICoverTypeRepository CoverType { get; }          IProductRepository Product { get; }          void Save();     }

      public interface IUnitOfWork { ICategoryRepository Category { get; } ICoverTypeRepository CoverType { get; } IProductRepository Product { get; } void Save(); }

    • Роман, если вам удобно, можно будет по телеграмму и по скайпу созвониться, я вам покажу
    • laravel_creative_3103, выложите на гит минимум рабочий, попробуем разобраться, а на сегодня уже у нас ночь и спать.
    • у вас при сборке вылазит предупреждение

      D:1aspMVC-identityBulkyBookWebAreasIdentityDataApplicationDbContext.cs(9,50): warning CS0436: Тип "ApplicationDbContext" в "D:1aspMVC-identityBulkyBookWebAreasIdentityDataApplicationDbContext.cs"
      конфликтует с импортированным типом "ApplicationDbContext" в "BulkyBook.DataAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". Используется тип, определенный в "D:1aspMVC-identityBulkyBookWebAr
      easIdentityDataApplicationDbContext.cs". [D:1aspMVC-identityBulkyBookWebBulkyBookWeb.csproj]
      D:1aspMVC-identityBulkyBookWebProgram.cs(12,31): warning CS0436: Тип "ApplicationDbContext" в "D:1aspMVC-identityBulkyBookWebAreasIdentityDataApplicationDbContext.cs" конфликтует с импортированным ти
      пом "ApplicationDbContext" в "BulkyBook.DataAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". Используется тип, определенный в "D:1aspMVC-identityBulkyBookWebAreasIdentityDataApplicationDbC
      ontext.cs". [D:1aspMVC-identityBulkyBookWebBulkyBookWeb.csproj]
      D:1aspMVC-identityBulkyBookWebProgram.cs(17,31): warning CS0436: Тип "ApplicationDbContext" в "D:1aspMVC-identityBulkyBookWebAreasIdentityDataApplicationDbContext.cs" конфликтует с импортированным ти
      пом "ApplicationDbContext" в "BulkyBook.DataAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". Используется тип, определенный в "D:1aspMVC-identityBulkyBookWebAreasIdentityDataApplicationDbC
      ontext.cs". [D:1aspMVC-identityBulkyBookWebBulkyBookWeb.csproj]

      у вас 2 ApplicationDbContext вот в этом беда. Один переименовал и все запустилось.

    • Роман, да, все верно подметили. Оказывается при установки Identity, он мне сгенерировал еще одну БД в Identity. Спасибо!!!
    • laravel_creative_3103, лучшее спасибо, нажать на кнопку "Отметить решением"
    • Роман, вы напишите как решение, я отмечу как "отмечено решением". Как я понял в комментарии нельзя отмечать как "решение"
    • laravel_creative_3103, второй раз не могу ответить, можно ветку отметить
    • Роман, отметил
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Виктор Sys Ответ

    При запуске приложения ASP.NET и возникновении ошибки может быть несколько причин. Наиболее частые из них включают:

    1. Ошибки в коде: Проверьте ваш код на наличие опечаток, неправильного синтаксиса или логических ошибок. Убедитесь, что все переменные объявлены и инициализированы правильно, и что все методы и классы вызываются корректно.

    2. Неправильная конфигурация сервера: Проверьте файлы конфигурации вашего приложения (например, web.config) на наличие ошибок в настройках, таких как неправильные пути к файлам или некорректные параметры соединения с базой данных.

    3. Отсутствие необходимых компонентов: Убедитесь, что все необходимые библиотеки и компоненты установлены и правильно сконфигурированы на вашем сервере. Проверьте версии библиотек и убедитесь, что они совместимы с вашим приложением.

    4. Проблемы с базой данных: Если ваше приложение использует базу данных, убедитесь, что соединение с базой данных настроено правильно и база данных доступна. Проверьте правильность запросов к базе данных и обработку возможных исключений.

    5. Ограничения безопасности: Проверьте настройки безопасности вашего приложения и сервера. Убедитесь, что приложение имеет необходимые разрешения для выполнения операций, таких как доступ к файлам, сети и базе данных.

    Если вы не можете найти причину ошибки, попробуйте запустить приложение в режиме отладки, чтобы получить более подробную информацию об ошибке. Используйте отладчик для пошагового выполнения кода и отслеживания переменных.

    Надеюсь, эти рекомендации помогут вам найти и исправить проблему с запуском вашего приложения ASP.NET. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно