2016-09-22 22 views
-1

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

我的问题是,所有的时间,cookie中的更新都会删除我之前在cookie中的值,并且未被添加。 我创建了一个简单的代码。

enter image description here

起初该cookie的值为1 = A,这是良好的(正确的)。 但是在第二次运行时,当我输入if而不是其他时,cookie的值是2 = b。

enter image description here

的结果,我要的是1 = 2 & = B

谢谢

+4

如果您需要本网站的帮助,请发布您的代码。不是你的代码的图像,因为; 1.我们无法从图像中获取代码,将其放入测试工具中进行试用。 2.绝对没有人会花时间从图像中重新输入代码来帮助你。帮你一个忙,并把实际的代码/片段放在帖子中。 – Kevin

+0

我第二@Kevin评论。 – garfbradaz

回答

0

,让我试着解释一下这是怎么回事。当您像这样设置cookie集合“test2”的值HttpContext.Current.Response.Cookies["test2"].Values.Add("1", "a");时,您将发送新的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"; 
    } 

+0

谢谢你的回答,但问题在于请求和响应cookie在c#文件(c#class,而不是asp.net页面)上不可用。 这就是我使用C#文件中可用的HttpConext的原因。 我正在寻找c#文件中提供的另一个解决方案。 –

+0

这是C#。您可以使用HTTPContext.Current或更短的Request.Cookies,如上例所示。只要确保在using语句中有Sytem.Web和其他名称空间。在您的示例中,每个响应都会重置'test2'cookie集合。确保在将新值添加到test2 cookie集合之前设置旧值。 – DragoRaptor