当前位置: 移动技术网 > IT编程>开发语言>c# > c# 对cookies(增、删、改、查)的操作方法

c# 对cookies(增、删、改、查)的操作方法

2019年07月18日  | 移动技术网IT编程  | 我要评论
-----------------------------------------------------操作-------------------------------

-----------------------------------------------------操作-----------------------------------------------------------

1.添加cookies(用cookies方式去做sso,用户信息保存,修改都会依赖cookies)

复制代码 代码如下:

  #region##添加cookeis
    ///<summary>
    /// 添加cookeis
    ///</summary>
    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
///<summary>
/// 修改cookies
///</summary>
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
    ///<summary>
    /// 修改cookies
    ///</summary>
    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
    ///<summary>
    /// 得到cookies
    ///</summary>
    public void getcookies()
    {

        httpcookie cookies = request.cookies["porschev"];
        string name = cookies["name"];   //通过key取出对应value,多key同理取

    }
    #endregion


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

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

复制代码 代码如下:

   #region##删除cookies
    ///<summary>
    /// 删除cookies
    ///</summary>
    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
    ///<summary>
    /// 删除cookies
    ///</summary>
    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的方式可以

方法一定对,己经过项目实际验证,观点不一定正确,如理解有误,请各位指正!!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网