成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET中的cookieless屬性

開發 后端
本文介紹ASP.NET中的cookieless屬性,以及討論ASP.NET team為什么把原來只能設置true | false的屬性改成可以設置不同的枚舉值.首先我們來看看這4個值的含意。

WAP程序的表單驗證的時候遇到一個問題,在不支持Cookies的移動設備模擬器中無法正常進行表單驗證,聯想到昨天使用web.config設置cookieless屬性時會在訪問時會出現"Cannot use a leading .. to exit above the top directory"的異常,自然而然的我就想到了前一段時間困擾我很久的一個站點異常無法使用前導 .. 在***目錄上退出(Cannot use a leading .. to exit above the top directory)。綜合一下,終于理解了為什么會出現這樣的異常,也理解了為什么在ASP.NET 2.0 中,將原來cookieless屬性只能設置true|false,改成了可以設置枚舉HttpCookieMode的值,分別為:AutoDetect,UseCookies,UseDeviceProfile,UseUri 。

如果對表單驗證很有經驗的朋友可能會很清楚,可以有兩種方式來保存當前的SessionID和用戶的驗證票信息,分別是使用Cookie和在URL 地址加上一串編碼過的字符串來標識當前的SessionID和用戶的驗證票信息。***種方式非常普遍,對于使用URI來標識當前SessionID和驗證票,我相信如果不是特殊需要的話,相信很多人都會跟我一樣還無法很好理解。我做了兩個簡單的頁面,來模擬用戶的驗證過程。當我在web.config中設置cookieless="AutoDetect"時,就跟我們平常一樣,登錄的URL是:

http://localhost:1115/FormsAuthentication/Security/Default.aspx

而當我設置cookieless="UseUri"時,這時URL地址就變成了:

http://localhost:1115/FormsAuthentication/(F(V0-gEZNEzXUqevbOqKwNoBcMf6vBWnyNbdpa2UhZzrfOUkGPvyB91-9nFlnBDmCAgdpz4gJ6kq-QOVjbNsvKig2))/Security/Default.aspx

在站點目錄多了一級目錄,這里的值就是當前會用戶的驗證票信息和SessionID信息。在某些場合,這樣做是非常有意義的(或者是必須的),因為在不支持cookie環境下,你要去標識一個是否屬于同一個會話,當前用戶是否已驗證過,等等與會話相關信息的時候就會變得異常的困難。

了解了這兩個保存會話信息的方式后,我們再來討論一下,ASP.NET team為什么把原來只能設置true | false的屬性改成可以設置不同的枚舉值.首先我們來看看這4個值的含意(在Windows Live Writer 不能畫表格 :< ):

AutoDetect:自動檢測客戶端實際是否支持cookie再來決定使用兩種方式中的哪一種(***適應)。

UseCookies:不管客戶端是否支持cookie,反正都使用cookie來標識(***種方式)。

UseDeviceProfile:根據設備文件來判斷是否支持cookie,進而決定使用哪種方式。相信很多人都對這個概念很模糊,由于最近在研究WAP,所以對它有一些簡單的認識。在<%windir%>Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers目錄下有很多的.browser文件,這些文件就是用來標識對應的設備(瀏覽器)的瀏覽能力(描述不是很清楚,就是一些技術參數,是否支持cookie and so on),在ASP.NET中,會根據這些.browser文件,動態生成從HttpBrowserCapabilities繼承下來的設備參數類型,標識對應的設備的一些參數值,編程中可以通過Request.Browser得到這個設備參數對象,并使用。

UseUri :與UseCookies類似的,不管客戶端是否支持cookie,反正都使用第二種方式。

特別說明:為什么特別強調“實際”,和詳細描述UseDeviceProfile呢?主要是因為,我發現由于可能是設備文件中標識的參數與對應的設備的實際并不完全匹配,(比如,有可能設備文件中標識這種設備支持cookie,但實際的設備卻不支持)。所以如果要根據設備的實際來選擇是否使用cookie,那就要使用AutoDetect值了。設備文件只能是做為參考,當然如果你對設備文件有充分控制條件的話那就另當別論了。而且還有一點要特別注意,AutoDetect并不是默認值,UseDeviceProfile才是。

回到正題,為什么要改cookieless屬性的可選值呢?毫無疑問,是為了增加程序的可操控性。原來的值有點太過單一化了,二選一,沒有商量的余地。現在我們可以根據各種不同的情況來讓程序動態或程序員手動選擇。結合這一段時間的WAP開發經驗,我想這樣做的一個目的就是為了能更好的兼容移動設備,兼容WAP的應用。目前還有很多的設備還并不支持 cookie。

有了上面的介紹后,我還想來解開為什么會出現“Cannot use a leading .. to exit above the top directory”異常的迷團。前幾天也有收到一個朋友的來信,也是在使用CommunityServer 2.0遇到這個問題,(相信目前遇到最多的就是ASP.NET 2.0版的CommunityServer了)。目前使用了Url Rewrite,所以我們程序的很多URL都是假的,所以如果在頁面中使用了相對路徑(~/)的話,那我們就有可能遇到這樣的麻煩了。因為搜索引擎(特別是google)不支持cookie,所以在它訪問站點的時候就會使用上面提到的第二種方式來標識會話信息,這時候URI就多了一級了,所以在這個頁面下所有的鏈接地址都是多一個../,無法正常訪問了,從而造成上面這個異常的出現。(其實可以看出這個異常本身與Url Rewrite并沒有多大關系,只不是communityserver和我的程序中都使用了url rewrite)。

解決辦法有三種:

1.設置cookieless = UseCookies,不管客戶端是否支持cookie都使用cookie。

2.因為默認cookieless = UseDeviceProfile,所以可以為搜索引擎建立一個設備文件.browser,弄虛作假一下。《Get GoogleBot to crash your .NET 2.0 site》就有給出了這樣的做法了。

3.修改程序,將里面的相對路徑(~/)改成絕對路徑表示(可以使用Resolve方法)。

到目前為止對cookieless的討論就算告一段落了,我發現到目前為止中文社區好像還沒有很多人對這一屬性有過深入的討論。文中很多都是我個人綜合理解,總結出來,里面可能會有很多錯誤的認識和觀點,歡迎大家給我指正和補充。

【編輯推薦】

  1. 微軟發布ASP.NET MVC 2預覽版 多項功能更新
  2. ASP.NET服務器自定義控件安全準則
  3. ASP.NET編程規范之編碼規范淺析
  4. 關于ASP.NET Session的一點認識
  5. ASP.NET編程工具ASP.NET Web Matrix詳細介紹
責任編輯:佚名 來源: IT專家網
相關推薦

2009-07-22 17:55:52

2009-07-23 17:07:58

2009-07-28 13:17:09

EnableViewSASP.NET

2009-07-29 09:34:54

IsPostBack屬ASP.NET

2009-07-24 10:10:22

ASP.NET

2009-07-24 16:17:42

WebRequestEASP.NET

2009-07-29 15:07:23

Request對象的屬

2009-03-02 13:56:29

2009-07-22 17:45:35

ASP.NET教程

2009-07-27 13:01:28

TreeViewASP.NET

2009-07-31 09:58:20

URL映射ASP.NET

2009-08-04 18:05:37

動態編譯ASP.NET

2009-07-20 17:21:43

Session狀態ASP.NET

2009-12-01 09:30:34

ASP.NET MVC

2009-07-23 16:20:48

HTTP協議ASP.NET

2009-07-30 13:28:55

ASP.NET中的ja

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-31 10:08:33

OutputCache

2009-07-20 13:32:24

ScriptManagASP.NET

2009-07-20 14:54:23

HttpWorkerRASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲综合在线视频 | 中文字幕在线观看一区二区 | 欧美激情视频一区二区三区在线播放 | 国产日韩欧美在线观看 | 日韩精品久久一区二区三区 | 国产精品成人在线播放 | 一级片免费在线观看 | 免费性视频 | 在线观看成人 | 91福利网 | 亚洲国产福利视频 | 中文字幕99 | 久久久久久综合 | 国产一区二区三区免费观看视频 | 一级毛片免费完整视频 | 91视频精选 | 999国产精品视频 | 你懂的国产 | 成人免费看黄 | 精品一区二区免费视频 | 久久性色 | 又黄又爽的网站 | 亚洲精品视频网站在线观看 | 91精品久久久 | ririsao久久精品一区 | 国产欧美一区二区三区久久人妖 | 91在线一区 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 热99精品视频 | 午夜电影福利 | 久久美女网 | www.玖玖玖 | 天天综合网7799精品 | 久草综合在线视频 | 久久久国产一区二区 | 国产精品波多野结衣 | 日韩专区中文字幕 | 国产亚洲精品精品国产亚洲综合 | 91免费在线视频 | 国产精品久久久久久久久久久免费看 | 国产精品色综合 |