濮阳杆衣贸易有限公司

主頁 > 知識庫 > ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因

ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因

熱門標簽:長春呼叫中心外呼系統(tǒng)哪家好 五常地圖標注 戶外地圖標注軟件手機哪個好用 凱立德導(dǎo)航官網(wǎng)地圖標注 智能電話營銷外呼系統(tǒng) 萊蕪?fù)夂綦婁N機器人價格 電銷語音自動機器人 地圖標注和認領(lǐng) 鄭州400電話辦理 聯(lián)通

例子如下:

復(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不存在");
    }
}
 


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

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

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

 

這是為什么呢?明明是執(zhí)行了刪除cookie的操作,為什么就是刪不掉呢?
我們?nèi)タ纯?NET的HttpCookieCollection實現(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();
    }
}


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

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

我們再運行程序,測試:

好了。Cookie已經(jīng)刪除。通過設(shè)置Cookie的過期時間為負,強制使Cookie過期。就能實現(xiàn)我們需要的效果了。

既然Response.Cookies.Remove沒有辦法實現(xiàn)我們需要的效果,為什么微軟還有留著呢,因為CookieCollection實現(xiàn)ICollection接口,romove是必須實現(xiàn)的方法,盡管它沒多大的實際價值。而集合的romove也應(yīng)該是這樣的實現(xiàn)方式,只不過微軟在寫MSDN的時候,描述得太不清楚了,給我們造成了不小的麻煩。
您可能感興趣的文章:
  • 詳解在ASP.NET Core 中使用Cookie中間件
  • Asp.net中安全退出時清空Session或Cookie的實例代碼
  • ASP.NET中Cookie的使用方法
  • asp.net利用cookie保存用戶密碼實現(xiàn)自動登錄的方法
  • ASP.NET筆記之頁面跳轉(zhuǎn)、調(diào)試、form表單、viewstate、cookie的使用說明
  • ASP.NET Cookie是怎么生成的(推薦)

標簽:岳陽 紅河 福州 西藏 宣城 西寧 湖州 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因》,本文關(guān)鍵詞  ASP.NET,之,Response.Cookies.Remove,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    板桥市| 星子县| 樟树市| 弥勒县| 金山区| 寿阳县| 米易县| 宁安市| 谢通门县| 灵宝市| 西昌市| 中阳县| 北辰区| 镇安县| 南漳县| 福贡县| 隆德县| 葫芦岛市| 栖霞市| 雅安市| 甘谷县| 柏乡县| 松江区| 阿拉尔市| 丰县| 湘潭市| 金川县| 武宣县| 化州市| 赤峰市| 宽甸| 清新县| 禄劝| 衡东县| 建宁县| 东乡族自治县| 新绛县| 芦山县| 泉州市| 双流县| 镇康县|