热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c#中对cookie的几种操作(增、删、改、查)

1.添加cookies(用cookies方式去做sso,用户信息保存,修改都会依赖cookies)复制代码代码如下:#region##添加cookeis<summary>
1.添加COOKIEs(用COOKIEs方式去做sso,用户信息保存,修改都会依赖COOKIEs)




代码如下:
  #region##添加cookeis
    ///
    /// 添加cookeis
    ///

    public void AddCOOKIEs()
    {


        HttpCOOKIE COOKIEs = new HttpCOOKIE("Porschev");
        COOKIEs["name"] = "Zhong Wei";
        COOKIEs["sex"] = "1";
        COOKIEs.Expires = DateTime.Now.AddMinutes(20);
        Response.COOKIEs.Add(COOKIEs);


    }
    #endregion




添加COOKIEs一般不会有人出错的。。。记得添加Expires就行


2.修改COOKIEs( 在程序中难免会操作,对用户信息的修改,更新数据库后,也会修改COOKIEs,为了修改后的显示)


方法一:




代码如下:
#region##修改COOKIEs
///
/// 修改COOKIEs
///

public void ModCOOKIEs()
{


HttpCOOKIE COOKIEs = Request.COOKIEs["Porschev"];
COOKIEs["name"] = "wilson Z";


}
#endregion 




新建个测式页。。再取COOKIEs中的name,结果:wilson Z;


这是这次项目中遇到的“杯具”事件之一,当这样修改COOKIEs时,在更新方法中再取这个名为Porschev的COOKIEs,


name的值还为Zhong Wei而非wilson Z,页面显示也不对(己排除页面缓存原因,更新也确实没有成功)


修改方法一:




代码如下:
 #region##修改COOKIEs
    ///
    /// 修改COOKIEs
    ///

    public void ModCOOKIEs()
    {


        HttpCOOKIE COOKIEs = Request.COOKIEs["Porschev"];
        COOKIEs["name"] = "wilson Z";
        //加上下面一句
        Response.COOKIEs["Porschev"].Expires = DateTime.Now.AddMinutes(-1);  


    }
    #endregion




再次测式,结果正确,取出name的值为:wilson Z,页面显示也正确


自己理解:得让以前存入过期时间为20min的COOKIEs失效


3.得到COOKIEs (这个最简单,为求方法完整,还是写上吧)




代码如下:
 #region##得到COOKIEs
    ///
    /// 得到COOKIEs
    ///

    public void GetCOOKIEs()
    {


        HttpCOOKIE COOKIEs = Request.COOKIEs["Porschev"];
        string name = COOKIEs["name"];   //通过key取出对应value,多key同理取


    }
    #endregion




4.删除COOKIEs (删除COOKIEs网上有很多方法,但是删除不是都能管用)


方法一:(最常用的一个删除COOKIEs方法)




代码如下:
   #region##删除COOKIEs
    ///
    /// 删除COOKIEs
    ///

    public void DelCookeis()
    {


        if (Request.COOKIEs["Porschev"] != null)
        {
            HttpCOOKIE COOKIEs = new HttpCOOKIE("Porschev");
            COOKIEs.Expires = DateTime.Now.AddDays(-1);
            Response.COOKIEs.Add(COOKIEs);
        }         


    }
    #endregion




在项目中测式,删除部分COOKIEs失败,很无语,于是换一种方法




代码如下:
 #region##删除COOKIEs
    ///
    /// 删除COOKIEs
    ///

    public void DelCookeis()
    {


        foreach (string COOKIEname in  Request.COOKIEs.AllKeys)
        {
            HttpCOOKIE COOKIEs = Request.COOKIEs[COOKIEname];
            if (COOKIEs != null)
            {
               COOKIEs.Expires = DateTime.Today.AddDays(-1);
               Response.COOKIEs.Add(COOKIEs);
               Request.COOKIEs.Remove(COOKIEname);
            }
        }    


    }
    #endregion




测式:删除成功


自己理解:方法一只能删除提当前Response中的COOKIEs,不对完成删除掉客端的COOKIEs,用遍历COOKIEs的方式可以


推荐阅读
author-avatar
手机用户2702934194
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有