【问题标题】:issues in c# static class to deal with cookiesc#静态类中处理cookie的问题
【发布时间】:2016-09-22 18:07:12
【问题描述】:

我想创建一个静态类来处理我的 ASP.NET 站点中的 cookie。 该类是用 c# 编写的,位于 App_code 文件夹中。

我遇到的问题是,cookie 中的更新一直删除我在 cookie 中的先前值,并且没有被添加。 我创建了一个简单的代码。

起初 cookie 的值为 1=a ,这很好(正确)。 但是在第二次运行中,当我输入 if 而不是 else 时,cookie 值为 2=b。

我想要的结果是 1=a&2=b

谢谢

【问题讨论】:

  • 如果您需要此站点的帮助,请发布您的代码。不是您的代码的图像,因为; 1. 我们无法从图像中获取您的代码以将其放入测试工具中进行试用。 2. 绝对没有人会花时间从图像中重新键入您的代码来帮助您。帮自己一个忙,把实际的代码/sn-ps放在帖子里。
  • 我第二个@Kevin 评论。

标签: c# asp.net cookies static-classes


【解决方案1】:

让我试着解释一下发生了什么。当您像 HttpContext.Current.Response.Cookies["test2"].Values.Add("1", "a"); 那样设置 cookie 集合“test2”的值时,您将发送一个新的 cookie 集合对象作为新 HTTP 响应流的一部分。新的 HTTP 响应对象对先前设置的名称/值 cookie 项(现在可以通过 HTTP 的请求对象访问)一无所知。 要解决此问题,只需将请求对象中的 cookie 添加到 Response 对象中的新 cookie 集合中。



    if (Request.Cookies["stackoverflow"] != null)
    {               
        Response.Cookies["stackoverflow"].Values.Add(Request.Cookies["stackoverflow"].Values);
        Response.Cookies["stackoverflow"].Values.Add("2", "bbbb");
    }
    else
    {
        Response.Cookies["stackoverflow"]["1"] = "aaaaaa";
    }

【讨论】:

  • 感谢您的回答,但问题是c#文件(c#类,而不是asp.net页面)中没有请求和响应cookie。这就是我使用 c# 文件中提供的 HttpConext 的原因。我正在寻找另一种 c# 文件中可用的解决方案。
  • 这是 C#。您可以使用 HTTPContext.Current 或更短的 Request.Cookies,如上例所示。只需确保在 using 语句中有 Sytem.Web 和其他命名空间。在您的示例中,每个响应都会重置“test2”cookie 集合。确保在向 test2 cookie 集合添加新值之前设置旧值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
相关资源
最近更新 更多