AspNet:Cookie值没有更改

本文关键字:Cookie AspNet | 更新日期: 2023-09-27 18:27:28

cookie的值不会改变。我使用的是localhost。我正在调试使用Visual Studio 2013。

我对属性使用以下模式:

public int ModeIdx
{
    get
    {  
        return Convert.ToInt32(Page.Request.Cookies["keksGS"].Values["modIdx"]);
    }
    set
    { 
        Page.Response.Cookies["keksGS"].Values["modIdx"] = value.ToString(); 
    }
}

即使是一个简单的ModeIdx++也不起作用。ModeIdx保持旧值。keksGS cookie已正确初始化。

我最初的想法是"Firefox 42.0"浏览器没有足够的时间更新cookie(Page.Request保留旧值)。因此,我添加了Page.Response.Flush();。一切都没有改变。

我最近的想法是我错过了一件基本的事情。我想不出是什么。

你能在这件事上帮我吗?

谢谢!

AspNet:Cookie值没有更改

由于此值仅由服务器使用,并且ASP.NET已经添加cookie来跟踪会话(假设它没有被明确禁用),因此您可以简单地利用Session功能。

将您的实现更改为以下内容:

public int ModeIdx
{
    get 
    {  
        var result = Session["modIdx"] as int?;
        return result ?? 0; //Default to 0 if we can't cast to int, or the value was never set.
    }
    set { Session["modIdx"] = value; }
}