【问题标题】:System.Web.HttpContext.Current.get returned null in asp.net mvc controllerSystem.Web.HttpContext.Current.get 在 asp.net mvc 控制器中返回 null
【发布时间】:2018-08-02 05:26:33
【问题描述】:

我想在我的 MVC 控制器的操作中使用 Session,但我遇到了这个错误,但我不确定为什么会出现错误。

System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Web.HttpContext.Current.get returned null.

控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using fyp.Models;
using System.Security.Claims;
using System.Data;
using System.Web;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;


namespace fyp.Controllers
{
    public class CustomerController : Controller
    {
        //Omitted actions

        [HttpGet]
        public IActionResult StartOrderMenu()
        {
            ViewData["Layout"] = "_Layout";
            List<Cart> carts = new List<Cart>();
            var jsoncart = JsonConvert.SerializeObject(carts);
            System.Web.HttpContext.Current.Session["cart"] = jsoncart;
            DbSet<Food> dbs = _dbContext.Food;
            List<Food> model = dbs.ToList();
            return View(model);
        }
    }
}

【问题讨论】:

  • 简单地分配Session["cart"] = jsoncart; 将起作用,因为它来自Controller 类。 System.Web.HttpContext.Current 实例在您使用它时可能没有上下文。
  • @TetsuyaYamamoto 如果我使用Session["cart"] = jsoncart; 我会得到The name 'Session' does not exists in the current context
  • 对不起,我忘了你在使用 Core MVC。 Session 的用法略有不同,因为 System.Web 命名空间不存在(参见 this reference):HttpContext.Session.SetString("cart", jsoncart);

标签: c# asp.net asp.net-mvc session asp.net-core-mvc


【解决方案1】:

System.Web 命名空间未在 ASP.NET Core MVC 中使用,因此System.Web.HttpContext.Current 属性将始终返回空值(注意HttpContext 已注入)。如果要在IActionResult控制器中设置会话变量,可以使用SessionExtensions.SetString方法:

string key = "cart";

HttpContext.Session.SetString(key, jsoncart);

如果你想找回它,使用SessionExtensions.GetString方法:

string jsonCart = HttpContext.Session.GetString("cart");

注意:要让HttpContext 实例工作,请将using Microsoft.AspNetCore.Http; 放在命名空间声明之前。

进一步参考:Session and app state in ASP.NET Core

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多