![](/img/trans.png)
[英]Send ASP.NET MVC HttpContext to Web Api HttpContext
[英]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.