最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET之Response.Cookies.Remove 無(wú)法刪除COOKIE的原因

 更新時(shí)間:2013年06月13日 10:16:46   投稿:shangke  
在web開(kāi)發(fā)中Cookie是必不可少的,.NET自然也有一個(gè)強(qiáng)大的Cookie操作類,我們用起來(lái)也非常方便,不過(guò)在使用中我們會(huì)發(fā)現(xiàn)一個(gè)事情Response.Cookies.Remove刪除不了Cookie,

例子如下:

復(fù)制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        HttpCookie UserInfo = new HttpCookie("UserInfo");
        UserInfo.Value = "bdstjk";
        Response.Cookies.Add(UserInfo);
    }

}

protected void btnRemoveCookie_Click(object sender, EventArgs e)
{
    Response.Cookies.Remove("UserInfo");
    Response.Write("<script type=\"text/javascript\">alert(\"刪除Cookie成功!\");</script>");
}

protected void btnCheckCookie_Click(object sender, EventArgs e)
{
    if (Request.Cookies["UserInfo"] != null)
    {
        Response.Write("Cookie存在,"+Request.Cookies["UserInfo"].Value);
    }
    else
    {
        Response.Write("Cookie不存在");
    }
}
 


頁(yè)面代碼:
復(fù)制代碼 代碼如下:

<asp:Button ID="btnRemoveCookie" runat="server" Text="刪除Cookie"
             />
<asp:Button ID="btnCheckCookie" runat="server" Text="檢查Cookie"
             />

運(yùn)行代碼測(cè)試,你會(huì)發(fā)現(xiàn),怎么點(diǎn)刪除按鈕,cookie都存在,如下圖:

這是為什么呢?明明是執(zhí)行了刪除cookie的操作,為什么就是刪不掉呢?
我們?nèi)タ纯?NET的HttpCookieCollection實(shí)現(xiàn)源碼

復(fù)制代碼 代碼如下:

public void Remove(string name)
{
    if (this._response != null)
    {
        this._response.BeforeCookieCollectionChange();
    }
    this.RemoveCookie(name);
    if (this._response != null)
    {
        this._response.OnCookieCollectionChange();
    }
}

 
這個(gè)操作在HttpCookieCollection這個(gè)集合里面刪除了cookie,當(dāng)服務(wù)器將數(shù)據(jù)傳輸?shù)娇蛻舳说臅r(shí)候,不會(huì)包含這個(gè)已經(jīng)在服務(wù)端刪除了的Cookie的任何信息,瀏覽器也就不會(huì)對(duì)它做任何改變(remove方法只是不讓服務(wù)器向客戶機(jī)發(fā)送那個(gè)被刪除的cookie,與此cookie留不留在客戶機(jī)里無(wú)關(guān))。所以cookie刪除不掉的情況就出現(xiàn)。
那么如果我們想刪除cookie應(yīng)該怎么做呢?
把刪除cookie的代碼改成如下語(yǔ)句:
復(fù)制代碼 代碼如下:

if (Request.Cookies["UserInfo"] != null)
{
    Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);
}
Response.Write("<script type=\"text/javascript\">alert(\"刪除Cookie成功!\");</script>");

我們?cè)龠\(yùn)行程序,測(cè)試:

好了。Cookie已經(jīng)刪除。通過(guò)設(shè)置Cookie的過(guò)期時(shí)間為負(fù),強(qiáng)制使Cookie過(guò)期。就能實(shí)現(xiàn)我們需要的效果了。
 
既然Response.Cookies.Remove沒(méi)有辦法實(shí)現(xiàn)我們需要的效果,為什么微軟還有留著呢,因?yàn)镃ookieCollection實(shí)現(xiàn)ICollection接口,romove是必須實(shí)現(xiàn)的方法,盡管它沒(méi)多大的實(shí)際價(jià)值。而集合的romove也應(yīng)該是這樣的實(shí)現(xiàn)方式,只不過(guò)微軟在寫MSDN的時(shí)候,描述得太不清楚了,給我們?cè)斐闪瞬恍〉穆闊?/p>

相關(guān)文章

最新評(píng)論

石首市| 衡山县| 寿光市| 桐梓县| 项城市| 绍兴县| 金寨县| 葫芦岛市| 朝阳县| 亚东县| 济阳县| 兰州市| 潮安县| 景东| 宾阳县| 托克托县| 甘谷县| 杭锦后旗| 荔浦县| 乐东| 扶余县| 鱼台县| 浪卡子县| 鸡西市| 新邵县| 高清| 桐柏县| 榆林市| 中西区| 寿阳县| 闸北区| 会昌县| 凤凰县| 福泉市| 贵定县| 玉树县| 志丹县| 车险| 沙雅县| 黄陵县| 玉树县|