我在asp.net程序中在多个页面中使用cookie["token"]和地址栏参数"url?token=…" 同时传递一个字符串,为什么地址栏中的参数会变成重复的?
比如说cookie["token"] = "china"  地址栏中 : url?token=china 结果传到第三个页面的时候地址栏中就变成了 : url?token=china,china  第四个页面就变成4个china了。
开始以为是cookie没有保存到客户端,而是通过url来传递的,但是设置过期时间后,cookie已经保存到了客户端,但是仍然会出现上面的问题。
初步分析是.net中cookie是用隐藏的地址栏参数进行传递的,不知道对不对?
请问有没有办法解决cookie和参数同时传递的问题(这里的地址栏参数需要与cookie的名字相同,所以不能改变名字)

解决方案 »

  1.   

    没碰到过只有  web.config内 cookieless设为true 才会用url传递 而且是加密的检查你的代码连接那部分你如何写的?
      

  2.   

    这肯定是你定位url的问题,不是asp.net的问题。
    你查看一下,在哪儿进行定位url,看看在传之前是否有问题
      

  3.   

    我在web.config内 cookieless的属性使用的是false, 是应该使用cookie传递而不是用重写url实现的。
    另外对于楼上说的,我也在程序里面跟过,url传递的参数没有问题,而且还发现cookie保存到客户端后,再重新登陆这个页面时,Page.Response.Params["token"]中就已经有上次访问时保存的cookie["token"]了,说明cookie是用参数来传递的
      

  4.   

    @@Page.Response.Params["token"]中就已经有上次访问时保存的cookie["token"]了,说明cookie是用参数来传递的因为HttpResponse并没有Params属性,所以我理解你说的应该是Request.Params["token"]然而,这不能说明什么,更不能说明 “cookie是用参数来传递的”
    Request.Params包含 从 Form 、Cookie、 QueryString和ServerVariables来的数据
    你用Request.Params["token"]当然能获得Cookie的数据了,
    获取Url中QueryString的数据请采用 Request.QueryString["token"] 这样就不会和Form、Cookie、ServerVariables中的数据存在“冲突”
      

  5.   

    楼上说的有道理,Page.Request.Params["token"]是获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。
    改成 Request.QueryString["token"] 后,问题解决了,谢谢(武眉博<活靶子.NET>)