为什么Request.Cookies在MVC中返回null

时间:2018-02-18 04:08:49

标签: asp.net-mvc cookies

我试图在我的asp.net mvc项目中使用Cookie Cookie已创建且具有价值。但是我无法读懂它 我用这段代码创建了cookie:

HttpCookie cookie = new HttpCookie("UserSettings", "value");
cookie.Expires = DateTime.Now.AddDays(10);
HttpContext.Response.Cookies.Add(cookie);  

此代码用于阅读:

return HttpContext.Request.Cookies["UserSettings"].Value;  

但在阅读cookie时我有这个错误:

  

对象引用未设置为对象的实例

我真的很困惑为什么!我经常搜索,浪费了我的时间 我在哪里弄错了?

更新
我检查了开发人员工具chrome中的Application选项卡。 cookie存在。

2 个答案:

答案 0 :(得分:0)

  • 您在致电Request.Cookies后是否正在阅读Response.Cookies.Add?如果是,则它仍然为空,因为Request.Cookies将填充下一个请求。
  • 书面cookie的域名是什么?它与cookie阅读器的域名是否相同?默认情况下,cookie由同一域中的所有页面共享,并且对所有其他子域都不可见。
  • HttpContext.Request.Cookies["UserSettings"]可以返回空值。所以你应该先检查一下它的价值。
  • 还要检查浏览器的开发者工具的网络标签,看看是否存在书面Cookie?

答案 1 :(得分:0)

如果是,则在控制器的构造函数中读取Request属性它在控制器生命周期中的那一点上不存在。 你可以覆盖Initialize方法:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
//check request context for cookie.

}