簡體   English   中英

System.Web.HttpContext.Current.get在ASP.NET MVC控制器中返回null

[英]System.Web.HttpContext.Current.get returned null in asp.net mvc controller

我想在我的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);
        }
    }
}

ASP.NET Core MVC中未使用System.Web命名空間,因此System.Web.HttpContext.Current屬性將始終返回null值(請注意,已注入HttpContext )。 如果要在IActionResult控制器中設置會話變量, IActionResult可以使用SessionExtensions.SetString方法:

string key = "cart";

HttpContext.Session.SetString(key, jsoncart);

如果要檢索它,請使用SessionExtensions.GetString方法:

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

注意:要獲得HttpContext實例的工作,請using Microsoft.AspNetCore.Http; 在命名空間聲明之前。

進一步參考: ASP.NET Core中的會話和應用程序狀態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM