【发布时间】:2011-05-12 17:11:07
【问题描述】:
我在下面的示例中遇到了 cookie 问题。 cookie 确实被创建了,当我在它创建后放置一个调试点时,我可以用手表检查 cookie 中的内容。但是,当我重新启动网站时,cookie 仍然存在,但已变为空并且不会创建模型(所有字段为空。)
我环顾四周,发现与使用 response.Cookie 和没有到期日期有关的错误,但我改变了周围的东西,它仍然是空的。我做错了什么还是因为我使用 localhost?
[HttpGet]
[Autorize]
public ActionResult ManagePaymentRun()
{
ViewData["currentAction"] = "Index";
payments.AccountNo = Request.Cookies["FSCSPayments"]["AccountNo"];
payments.SortCode = Request.Cookies["FSCSPayments"]["SortCode"];
payments.FirstChequeNo = "2";// Request.Cookies["FSCSPayments"]["FirstChequeNo"];
payments.FileName = Request.Cookies["FSCSPayments"]["FileName"];
payments.FRN = Request.Cookies["FSCSPayments"]["FRN"];
payments.JobNumber = Request.Cookies["FSCSPayments"]["JobNumber"];
payments.StartRecNo = Request.Cookies["FSCSPayments"]["StartRecNo"];
return View(payments);
}
internal void CreateCookie()
{
HttpCookie cookie = new HttpCookie("FSCSPayments");
cookie.Values.Add("AccountNo", payments.AccountNo);
cookie.Values.Add("SortCode", payments.SortCode);
cookie.Values.Add("FirstChequeNo", payments.FirstChequeNo);
cookie.Values.Add("FileName", payments.FileName);
cookie.Values.Add("FRN", payments.FRN);
cookie.Values.Add("JobNumber", payments.JobNumber);
cookie.Values.Add("StartRecNo", payments.StartRecNo);
cookie.Expires = DateTime.Now.AddDays(14);
cookie.Path = "/";
Request.Cookies.Add(cookie);
}
【问题讨论】:
-
如果 cookie 没有设置未来的到期日期,那么它是一个会话级别的 cookie,通常会在浏览器关闭或会话超时时被销毁(取决于特定的浏览器)。您在代码中的哪个位置调用
CreateCookie()?当您说您重新启动网站并且cookie在那里时,您是什么意思?您在浏览器的 cookie 缓存中找到它吗?如果 cookie 被持久化,那么它与服务器的停止和启动无关。 -
如果我搜索 cookie 缓存,它就在那里。我在我的 cookie 中添加了一个添加天数,所以它不应该是会话 cookie 对吗?并且 createcookie 在 ManagePaymentRun HttpPost 操作中被调用,并且我在创建 cookie 中设置了一个调试点并且它确实通过了那里。
标签: c# visual-studio-2010 asp.net-mvc-2 cookies localhost