【发布时间】: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