欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中Request.Cookies 和 Response.Cookies 的區(qū)別分析

 更新時(shí)間:2014年11月27日 15:03:00   投稿:hebedich  
本文通過實(shí)例代碼向我們展示了C#中Request.Cookies 和 Response.Cookies 的區(qū)別,文章淺顯易懂,這里推薦給大家。

.NET中提供了讀寫Cookie的多種方法,Request.Cookies 是客戶端通過 Cookie 標(biāo)頭形式由客戶端傳輸?shù)椒?wù)器的 Cookie;Response.Cookies 在服務(wù)器上創(chuàng)建并以 Set-Cookie 標(biāo)頭的形式傳輸?shù)娇蛻舳恕R簿褪钦f,一個(gè)是客戶端向服務(wù)器端發(fā)送的來的,一個(gè)是服務(wù)器發(fā)送到客戶端的。

第一次創(chuàng)建Cookies的時(shí)候,下面的2種讀取方法讀取到的內(nèi)容是一樣:

C# 代碼

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

HttpCookie hc = new HttpCookie("User2");
hc["UserName"] = "mengxianhui";
Response.Cookies.Add(hc);
  
Response.Cookies["User1"]["UserId"] = "net_lover";
  
Response.Write(Request.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Request.Cookies["User2"].Values["UserName"].ToString());
Response.Write("<hr>");
Response.Write(Response.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Response.Cookies["User2"].Values["UserName"].ToString());

但是,一旦Cookie存在,再使用上面的方法進(jìn)行讀取,結(jié)果是有差別的,Response.Cookies可以立即讀取到新的Cookie,而Request.Cookies讀取到仍是上一次設(shè)置的,也就是必須通過客戶端向服務(wù)器發(fā)送請求時(shí)才能讀取到。為什么會(huì)有這樣的差別,應(yīng)該是.NET實(shí)現(xiàn)的問題,里面有這么一段:
C# 代碼

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

if (includeResponse && (this.Response != null))
{
    HttpCookieCollection cookies = this.Response.Cookies;
    if (cookies.Count > 0)
    {
        HttpCookie[] dest = new HttpCookie[cookies.Count];
        cookies.CopyTo(dest, 0);
        for (int i = 0; i < dest.Length; i++)
        {
            cookieCollection.AddCookie(dest[i], true);
        }
    }
}

在Cookie不存在時(shí),它應(yīng)該是讀取Response.Cookies里面的Cookie了,所以第一次讀取相同,而以后讀取不同的原因吧。

另外,Response.Cookies必須是在設(shè)置完后讀取,不能像Request.Cookies那樣隨時(shí)讀取,如在別的頁面讀取Cookies,下面的方法就是錯(cuò)誤的

C# 代碼

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

protected void Page_Load(object sender, EventArgs e)
{
  Response.Write(Response.Cookies["User1"].Values["UserId"].ToString());
  Response.Write(Response.Cookies["User2"].Values["UserName"].ToString());
}

總結(jié):

Request.Cookies:主要是用于獲取所有Cookie值的,包括JS、Request.Cookies和Response??.Cookies三種方法創(chuàng)建的Cookie值;說到這里,大家可以看出Request.Cookies既可以獲取Cookie也可以創(chuàng)建Cookie,那么它創(chuàng)建的Cookie與Response和JS創(chuàng)建的Cookie有什么不用呢,通過實(shí)驗(yàn)發(fā)現(xiàn),通過Request.Cookies創(chuàng)建的Cookie只有?Request.Cookies才能獲取到,而其他兩種方法是不能獲取的,也就是說Request.Cookies創(chuàng)建的Cookie只能用于.Net后臺(tái)不能用于HTML的前臺(tái)。

Response.Cookies:主要用于Cookie的創(chuàng)建、賦值和刪除操作,經(jīng)過?Response.Cookies操作過的Cookie,所有方法獲取到的都是被更新過的值,也就是說Response.Cookies是修改所有容器中的Cookie的值;Response.Cookies除了是Cookie的終極修改者外,我們在寫代碼的時(shí)候可能會(huì)發(fā)現(xiàn)通過Response.Cookies也可以得到部分Cookie的值,通過實(shí)驗(yàn)發(fā)現(xiàn),此處獲取的Cookie值只是本次會(huì)話中且是通過Response.Cookies創(chuàng)建的Cookie,基本上沒什么用處。

相關(guān)文章

  • 簡單聊聊c# 事件

    簡單聊聊c# 事件

    這篇文章主要介紹了c# 事件的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 簡單介紹C# 中的擴(kuò)展方法

    簡單介紹C# 中的擴(kuò)展方法

    這篇文章主要介紹了C# 中的擴(kuò)展方法的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • C#實(shí)現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法

    C#實(shí)現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法,涉及C#數(shù)組與字符串的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • c# EnumHelper枚舉常用操作類

    c# EnumHelper枚舉常用操作類

    在項(xiàng)目中需要把枚舉填充到下拉框中,所以使用統(tǒng)一的方法實(shí)現(xiàn),測試代碼如下,需要的朋友可以參考下
    2016-11-11
  • .NET中保證線程安全的高級(jí)方法Interlocked類使用介紹

    .NET中保證線程安全的高級(jí)方法Interlocked類使用介紹

    這篇文章主要介紹了.NET中保證線程安全的高級(jí)方法Interlocked類使用介紹,Interlocked類可以為為多個(gè)線程共享的變量提供原子操作,需要的朋友可以參考下
    2014-07-07
  • C#編程獲取資源文件中圖片的方法

    C#編程獲取資源文件中圖片的方法

    這篇文章主要介紹了C#編程獲取資源文件中圖片的方法,涉及C#針對項(xiàng)目中資源文件操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#使用EF連接PGSql數(shù)據(jù)庫的完整步驟

    C#使用EF連接PGSql數(shù)據(jù)庫的完整步驟

    這篇文章主要給大家介紹了關(guān)于C#使用EF連接PGSql數(shù)據(jù)庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 使用接口實(shí)現(xiàn)多繼承的方法

    使用接口實(shí)現(xiàn)多繼承的方法

    下面小編就為大家分享一篇c#使用接口實(shí)現(xiàn)多繼承的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • C#實(shí)現(xiàn)六大設(shè)計(jì)原則之依賴倒置原則

    C#實(shí)現(xiàn)六大設(shè)計(jì)原則之依賴倒置原則

    這篇文章介紹了C#實(shí)現(xiàn)六大設(shè)計(jì)原則之依賴倒置原則的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Winform開發(fā)框架中如何使用DevExpress的內(nèi)置圖標(biāo)資源

    Winform開發(fā)框架中如何使用DevExpress的內(nèi)置圖標(biāo)資源

    這篇文章主要給大家介紹了關(guān)于在Winform開發(fā)框架中如何使用DevExpress的內(nèi)置圖標(biāo)資源的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來看看吧
    2018-12-12

最新評論