当EFCore尝试将数据从存储库返回到控制器时,为什么asp.net核心项目崩溃了?

时间:2019-01-02 12:35:00

标签: .net-core visual-studio-2017 asp.net-core-mvc ef-core-2.2

我试图在asp.net核心mvc应用程序中使用EFCore从数据库中获取数据,但是当存储库尝试将数据返回给控制器时,应用程序崩溃。

工具我正在使用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;
    }
}

存储库代码

公共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;
            }

    }

我希望用户通过身份验证后,应该转到另一个页面。

1 个答案:

答案 0 :(得分:0)

我参加聚会可能为时已晚,但对于在这里徘徊的人而言。

我看到您正在使用映射器。

在我的情况下,这种确切情况是由于错误的映射引起的StackOverflowException。