Я пытаюсь получить данные из базы данных, используя 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;
}
}
Я ожидаю, что после аутентификации пользователь должен перейти на другую страницу.