访问 session 信息得到 System.NullReferenceException

Accessing session info gives System.NullReferenceException

我对 ASP.net c# MVC 有点陌生。我正在尝试创建一个登录应用程序并创建一个 session.In 我的应用程序 我有一个登录控制器。在登录控制器中,我将登录用户的数据读取到 session 变量,如以下代码段所示。

[HttpPost]
public ActionResult Authorize(MVCFirst.Models.User userModel)
{
    using (MVCNewEntities db = new MVCNewEntities())
    {
        var userDetails = db.Users.Where(x => x.UserName == userModel.UserName && x.UserPWD == userModel.UserPWD).FirstOrDefault();
        if (userDetails == null)
        {
            userModel.LoginErrorMessage = "Incorrect useer name and password.";
            return View("Index", userModel);
        }
        else
        {
            Session["userID"] = userDetails.UserID;
            Session["userName"] = userDetails.UserName;
            return RedirectToAction("Index","Home");
        }
    }
}

我的 HomeControllerIndex,这是一个 ActionResult。在 HomeControllerView 中,我尝试将 session 的 Session 值读取为 html header,如以下代码段所示。

<body>
    <div> 
        <h1>Dashboard</h1>
        <h3>Username : @Session["userName"].ToString()</h3>
        <h3>User ID : @Session["userID"].ToString()</h3>
        <a href="@Url.Action("LogOut","Login")">Logout</a>
    </div>
</body>

当我编译应用程序时,它没有给出任何错误。它建立成功。但是当我 运行 它时,它抛出异常。异常中的消息说明如下。

Message "Object reference not set to an instance of an object."

我在这里缺少什么?我在这里犯了什么错误? 进一步解释。当我尝试登录时没有发生这种情况。这发生在我 运行 第一次申请时。

试试用这个 (Object?.ToString())

<body>
    <div> 
        <h1>Dashboard</h1>
        <h3>Username : @Session["userName"]?.ToString()</h3>
        <h3>User ID : @Session["userID"]?.ToString()</h3>
        <a href="@Url.Action("LogOut","Login")">Logout</a>
    </div>
</body>

在 Global.Asax 文件中设置以下内容

protected void Application_PostAuthorizeRequest()
{
HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}

您可以省略 .ToString()

在 MVC 中,执行 @someObj 将不会为 null 对象显示任何内容,并且会隐式调用 .ToString() 在其他任何事情上。

<div> 
    <h1>Dashboard</h1>
    <h3>Username : @Session["userName"]</h3>
    <h3>User ID  : @Session["userID"]</h3>
</div>