达明,如狐狸过水;机警,如战场上的将军;和善,如主妇款待客人;简单,呆若木鸡;混沌,如深渊之水。

ASP.NET操作Cookies的问题(Bug or Not)

以下存和取都是在不同的页面中,如果是在同一个页面也没必要用cookies了。

Test1:

给Cookies赋值:

const string AAA="aaa";

Response.Cookies[AAA].Value = "111;222;333";

取值:

string value = Request.Cookies[AAA].Value; // value为111


Test2:



给Cookies赋值:

const string AAA="aaa";

Response.Cookies[AAA].Value = "111222333";

取值:

string value = Request.Cookies[AAA].Value; // value为111222333



Test3:



给Cookies赋值:

const string AAA="aaa";

Response.Cookies[AAA].Value = "111|222|333";

取值:

string value = Request.Cookies[AAA].Value; // value为111|222|333

/////

//页面a
public partial class a : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Cookies[ConstString.user_right].Value = "ccc;aaa;bbb";
}
}


//页面b
public partial class b : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies[ConstString.user_right] != null)
{
TextBox1.Text = Request.Cookies[ConstString.user_right].Value;
}
}
}

//////
再次重申:
以上存和取都是在不同的页面中,如果是在同一个页面也没必要用cookies了。
看懂了再给回复。

结论:

分号(;)所造成的问题。Cookies中使用了分号(;)为分割符,如果值中又有分号,会出现问题,请大家注意。

 这是个BUG吗?

 

每个人都会经过这个阶段,见到一座山,就想知道山后面是什么。我很想告诉他,可能翻过山后面,你会发现没什么特别。回望之下,可能会觉得这一边更好。 每个人都会坚持自己的信念,在别人看来,是浪费时间,她却觉得很重要。
posted @ 2008-11-07 17:16 amingo 阅读(287) 评论(3)  编辑 收藏 网摘

  回复  引用  查看    
#1楼 2008-11-07 17:47 | Ivony...      
这个不是Bug,就像URL里面的字符转义一样,程序员应当自行注意。
  回复  引用  查看    
#2楼 2008-11-20 13:53 | 韦恩卑鄙      
恩 应该用url encode
  回复  引用  查看    
#3楼 [楼主]2008-11-20 14:00 | amingo      
@ Ivony...
@ 韦恩卑鄙
你们说的是解决的方式,但不了解cookies机制的可能会产生疑惑,为什么|可以,而;不行。 在使用别人提供的方法和属性时,我们只需要关系输入和输入就行了,而不必太过关心内部实现(做学习、研究除外)。
url encode确实可使这个情况不存在,但是如果MS把它写在cookies读取操作内部(写的时候encode后再存,读的时候decode再返回),是不是更好呢?

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-12-03 13:04 编辑过
Google站内搜索
[推荐职位]上海盛大网络招聘架构师



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接:
 

身是对象树,心如类般明;对象本无根,类型亦无形。