第一次设置后,响应Cookie未更新

时间:2016-08-21 16:09:34

标签: c# .net asp.net-mvc

我有一个cookie帮助程序类,用于获取和设置cookie的数据。

在我的控制器操作中,我正在尝试更新List集合并将其保留到cookie中。

更新:似乎使用HttpContext.Current.Response.Cookies.Add()即使cookie存在与否,它也会对它进行upsert并正常工作。 那么Reponse.Cookie.Set()的目的是什么呢?

private List<int> _TestNumbers = new List<int>();
cookie = new CookieHelper(_searchCookieName);
cookie.SetData("testNumbers", _TestNumbers);

_TestNumbers.Add(1);
cookie.SetData("testNumbers", _TestNumbers);
_TestNumbers.Add(2);
cookie.SetData("testNumbers", _TestNumbers);
_TestNumbers.Add(3);
cookie.SetData("testNumbers", _TestNumbers);

cookie助手类

public class CookieHelper
{
    public CookieHelper(string cookieName = null, HttpContext context = null)
    {
        // Set param defaults
        context = context ?? HttpContext.Current;

        if (cookieName != null)
            _cookieName = cookieName;

        // Load cookie if it exists, if not create one.
        _cookie = context.Request.Cookies[_cookieName] ?? new HttpCookie(_cookieName);

        Save();
    }

    public object GetData(string name)
    {
        return _cookie[name] == null ? null : new Base64Serializer().Deserialize(_cookie[name]);
    }

    public void SetData(string name, object value)
    {
        _cookie[name] = new Base64Serializer().Serialize(value);
        Save();
    }

    public void Save()
    {
        _cookie.Expires = DateTime.UtcNow.AddDays(_cookieExpiration);

        // Create the cookie if it doesn't exist
        if(HttpContext.Current.Request.Cookies.Get(_cookieName) == null)
            HttpContext.Current.Response.Cookies.Add(_cookie);
        else
            HttpContext.Current.Response.Cookies.Set(_cookie);
    }
}

0 个答案:

没有答案