我可以通过编程方式防止由于cookie大小而引发400错误吗?

时间:2017-04-03 14:43:43

标签: c# iis-7.5

我的团队维护着一套C#应用程序,它们共享一组共同的cookie。

最近,我们遇到了cookie大小过大的情况,用户在访问我们的生产站点时开始遇到400错误。

我写了一个小的webforms应用程序,它将迭代我们的cookie列表并删除它们,但不包括我们尝试在Global.asax中读取/写入cookie的共享代码:

            foreach (var c in cookieList)
            {
                HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies[c];
                if (currentUserCookie != null)
                {
                    HttpContext.Current.Response.Cookies.Remove(c);
                    currentUserCookie.Expires = DateTime.Now.AddDays(-10);
                    currentUserCookie.Value = null;
                    HttpContext.Current.Response.SetCookie(currentUserCookie);
                }
            }

但是,我们网站上的所有页面仍然存在错误。我们能找到的唯一解决方案是让用户手动删除他们的cookie。

我们是否可以触发从服务器端删除我们的cookie并为用户节省手动清除cookie的麻烦?我们正在使用IE11和Chrome 54。

1 个答案:

答案 0 :(得分:0)

此行尝试更新现有Cookie(从响应中删除)

HttpContext.Current.Response.SetCookie(currentUserCookie);

试试这个..

        foreach (var c in cookieList)
        {
            HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies[c];
            if (currentUserCookie != null)
            {
                HttpContext.Current.Response.Cookies.Remove(c);
                currentUserCookie.Expires = DateTime.Now.AddDays(-1);
                HttpContext.Current.Response.Cookies.Add(currentUserCookie);
            }
        }