2012-07-24 101 views
1

我正在使用c#和mvc。我正在尝试向用户浏览器写入一个cookie。但是在刷新浏览器之后,cookie就消失了。刷新后Cookie不会持续

这是我的代码写的饼干:

movieCookie = new HttpCookie(cookieName); 
movieCookie.Value = "test; 
movieCookie.Expires = DateTime.Now.AddDays(30); 
//add the cookie 
HttpContext.Current.Response.Cookies.Add(movieCookie); 

和一个用于读取cookie的:

//check if such cookie exist 
HttpCookie movieCookie = null; 
if (HttpContext.Current.Request.Cookies.AllKeys.Contains(cookieName)) 
    movieCookie = HttpContext.Current.Request.Cookies[cookieName]; 

增加的另一件事是,当我搜索“AllKeys”就像这样:

HttpContext.Current.Request.Cookies.AllKeys 

由于某种原因,它显示一个空字符串数组。 有什么想法?

+0

如果您使用的是IE的最新版本,您是否使用过F12来查看服务器和客户端之间发送了什么? – HABO 2012-07-24 12:45:35

+0

您说cookie会消失,所以您可以在浏览器中看到cookie?你能说,在哪个上下文中创建了cookie?如果上下文例如是“/”,则它应该可以被当前域下的所有页面读取。也许您的应用的默认上下文设置得太深。并且禁止其他页面读取cookie。 – 2012-07-24 12:47:16

回答

1

有些可能是愚蠢的问题

  • 检查您的网络服务器的时间和日期,是他们设置正确,如果他们(你的情况)2年以后它会立即过期饼干。

  • 检查cookieName相同

  • 检查的cookie设置为响应后设置Cookie之前你不是重定向。要设置cookie,您需要设置标题并将其推出。

+0

我将cookie过期更改为30天,并检查了cookie名称,结果相同。没有理解你的第三条评论 - 在我设置cookie之后,我返回到视图(Mvc),然后再次从客户端向控制器发送请求,并从那里向cookie功能发送请求... – 2012-07-24 13:51:50

0

我解决了它。看起来,在MVC中,创建cookie后的“返回视图”会导致cookie不被保存。