You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC空引用异常求助:登录及产品功能均报Null Exception

问题描述

我正在做期末学期项目,原本应用运行正常,添加产品功能后只正常运行了一次,之后该功能就出现空引用异常(Null Exception),现在连登录功能也报同样的错误。

  • 错误截图1:空引用异常截图1
  • 错误截图2:空引用异常截图2
相关代码
[HttpPost]
public ActionResult LogIn(User ur, string ReturnUrl)
{
    if (isValid(ur) == true)
    {
        FormsAuthentication.SetAuthCookie(ur.UserName, false);
        Session["Usrname"] = ur.UserName;

        if (ReturnUrl != null)
        {
            return Redirect(ReturnUrl);
        }
        else
        {
            return RedirectToAction("Index", "Dashboard");
        }
    }
    else
    {
        ViewBag.msg = "Email Or Password is incorrect";
        return View();
    }
}

bool isValid(User ur)
{
    var cred = u_DB.Users.Where(model => model.UserEmail == ur.UserEmail && model.UserPassword == ur.UserPassword).FirstOrDefault();

    if (cred != null)
    {
       return true; 
    }
    else
    {
       return false;
    }
}
问题排查与解决建议
  1. 空引用核心排查点

    • 检查u_DB是否为null:isValid方法中,若数据库上下文u_DB未正确初始化,访问u_DB.Users会直接触发空引用异常。
    • 检查传入的ur对象是否为null:如果登录请求参数绑定失败,ur会是null,此时访问ur.UserEmail或ur.UserPassword会报错。
    • 排查产品功能的影响:添加产品功能后可能修改了数据库上下文的生命周期配置(比如误用单例模式),导致上下文被释放后重复使用,引发空引用。
  2. 针对性修复方案

    • 正确初始化数据库上下文:在控制器构造函数中实例化上下文,确保非空:
      private readonly YourDbContext u_DB;
      public YourController(YourDbContext dbContext)
      {
          u_DB = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
      }
      
    • 添加参数空值校验:在方法开头增加空值检查,避免无效访问:
      public ActionResult LogIn(User ur, string ReturnUrl)
      {
          if (ur == null)
          {
              ViewBag.msg = "无效的登录请求";
              return View();
          }
          // 原有代码...
      }
      
      bool isValid(User ur)
      {
          if (ur == null || string.IsNullOrEmpty(ur.UserEmail) || string.IsNullOrEmpty(ur.UserPassword))
          {
              return false;
          }
          // 原有代码...
      }
      
    • 确认上下文生命周期:确保数据库上下文使用Scoped生命周期(ASP.NET MVC默认是每个请求实例化一次),避免因上下文提前释放导致的异常。

内容的提问来源于stack exchange,提问作者Tauqeer Haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:15:15