Почему основной проект asp.net падает, когда EFCore пытается вернуть данные на контроллер из хранилища? - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь получить данные из базы данных, используя EFCore в моем приложении mvc для ядра asp.net, но приложение падает, когда репозиторий пытается вернуть данные в контроллер.

Инструменты Я использую Vs2017, MSSQL2017, Asp.net Core 2.2, EFCore2.2. Я сделал репозиторий, который аутентифицирует пользователя из базы данных. Когда я пытаюсь аутентифицировать пользователя через репозиторий, отправляя имя пользователя и пароль через контроллер, происходит сбой приложения.

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

Но я могу видеть некоторую информацию в окнах вывода Vs2017, которая выглядит следующим образом

«iisexpress.exe» завершил работу с кодом -1073741819 (0xc0000005) «Нарушение прав доступа»

Код контроллера

открытый класс LoginController: AppController { приватный только для чтения IUserRepository _userRepository;

    public LoginController(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    [HttpGet]
    public IActionResult Login()
    {            
        return View(new LoginViewModel());
    }

    [HttpPost]
    public IActionResult Login(LoginViewModel loginViewModel)
    {
        loginViewModel.Password = EncryptionLibrary.EncryptText(loginViewModel.Password);

        var user = _userRepository.FindUser(loginViewModel.Username, loginViewModel.Password);
        if ( user!= null)
        {                
            this.CurrentSaleState.Login.Id = user.Id;
            return RedirectToAction("Create", "RegisterCompany");
        }
        return null;
    }
}

Код репозитория

public UserModel FindUser (строка userName, строка пароля) {

            using (IRepositoryContext context = _repositoryFactory.CreateContext())
            {
                var user = context.Set<User>().FirstOrDefault(u => u.Username == userName && u.Password == password);
                var userModel = _modelMapper.Map<User, UserModel>(user);
                return userModel;
            }

    }

Я ожидаю, что после аутентификации пользователь должен перейти на другую страницу.

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