InvalidOperationException: невозможно разрешить службу для типа «Ошибка Microsoft.AspNetCore.Identity.UserManager. - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть следующий код в Account Controller

 public sealed class AccountController : Controller
    {
        #region Fields

        private readonly IUserService _userService;

        #endregion

        #region Ctor

        public AccountController(IUserService userService)
        {
            _userService = userService;
        }

        #endregion

        #region Register

        public IActionResult Register()
        {
            return View();
        }

        [HttpPost]
        public async Task<IActionResult> Register(RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }

            var user = _userService.Register(model);

            var result = await _userService.CreateAsync(user, model.Password);

            if (result)
            {
                await _userService.SignInAsync(user, false);

                return RedirectToAction("Index", "Home");
            }

            return View(model);
        }

Мой файл startup.cs выглядит следующим образом

services.AddDbContext<CourseAppIdentityContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("CourseAppIdentityContext"), sqlServerOptions => sqlServerOptions.MigrationsAssembly("Tada.CourseApp.Data")));

            services.AddDefaultIdentity<IdentityUser>()
                .AddRoles<IdentityRole>()
                .AddEntityFrameworkStores<CourseAppIdentityContext>()
                .AddDefaultTokenProviders();

А у меня UserService выглядит как

 public class UserService : IUserService
    {
        private readonly UserManager<IdentityUser> _userManager;
        private readonly SignInManager<IdentityUser> _signInManager;

        public UserService(UserManager<IdentityUser> userManager,
                           SignInManager<IdentityUser> signInManager)
        {
            _userManager = userManager;
            _signInManager = signInManager;
        }

        public async Task<bool> CreateAsync(IdentityUser user, string password)
        {
           var result = await _userManager.CreateAsync(user, password);

            if (result.Succeeded)
            {
                return true;
            }

            return false;
        }

Когда я запускаю приложение и открываю ссылку на регистр

возникает эта ошибка

InvalidOperationException: невозможно разрешить службу для типа 'Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNet.Identity.EntityFramework.IdentityUser] 'при попытке активировать' Tada.CourseApp.Business.Implementations.UserService '.

У меня DI как этот

services.AddSingleton<IUserService, UserService>();

Как это исправить?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...