解决存取Cookie时遇到编码出错的问题

这几天在开发项目时遇到一个奇怪的问题,在VS上运行正常的项目,移植到IIS服务器却报错,分析发现是取不到Cookie的值。在网上查了好多资料,大致的原因是存取Cookie时的编码不一致,解决方案主要有以下两种:
一、修改web.config文件

< globalization fileEncoding = " GB2312 "  requestEncoding = " GB2312 "  responseEncoding = " GB2312 " />

二、在存Cookie时进行编码,取的时候再解码
第一种方法貌似不起作用,以下是我用第二种方法的解决方案
1、存入Cookie   用Hashtable存放Cookie的键值对,key为Cookie集的主键,subkey为子键,vlaue为值。

 

         public   void  SetCookie( string  key, Hashtable ht)
        
{
            HttpCookie cookie 
= new HttpCookie(key);
            cookie.Expires 
= DateTime.Now.AddMinutes(30);
            
foreach (DictionaryEntry de in ht)
            
{
                cookie[de.Key.ToString()] 
= HttpUtility.UrlEncode(de.Value.ToString());
            }

            HttpContext.Current.Response.AppendCookie(cookie);
        }

2、获取Cookie的值

         public   string  GetCookie( string  key,  string  subkey)
        
{
            
string value;
            value 
= HttpContext.Current.Request.Cookies[key][subkey].ToString();
            
return HttpUtility.UrlDecode(value);
        }

3、判断Cookie是否存在

        public   bool  IsCookieExist( string  key)
        
{
            
if (HttpContext.Current.Request.Cookies[key] != null)
                
return true;
            
else
                
return false;
        }

4、初始化Cookie

         public   void  InitCookie( string  key)
        
{
            HttpCookie cookie 
= new HttpCookie(key);
            cookie.Expires 
= DateTime.Now.AddDays(-1);
            HttpContext.Current.Response.AppendCookie(cookie);
        }


 

转载于:https://www.cnblogs.com/maooson/archive/2007/09/28/910016.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值