首页 > 解决方案 > 当 EFCore 尝试将数据从存储库返回到控制器时,为什么 asp.net 核心项目会崩溃?

问题描述

我正在尝试通过在我的 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;
    }
}

存储库代码

public UserModel FindUser(string userName, string password) {

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

    }

我希望在验证用户身份后应该移动到另一个页面。

标签: .net-corevisual-studio-2017asp.net-core-mvcef-core-2.2

解决方案


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

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

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


推荐阅读