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

本文介绍了解决在IIS服务器上无法正确获取Cookie值的问题,通过在存储和读取Cookie时进行编码和解码操作来确保数据的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天在开发项目时遇到一个奇怪的问题,在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、付费专栏及课程。

余额充值