真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NET的四種狀態(tài)分別是哪些

ASP.NET的四種狀態(tài)分別是哪些,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)專注于梅縣企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城網(wǎng)站定制開(kāi)發(fā)。梅縣網(wǎng)站建設(shè)公司,為梅縣等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

這些狀態(tài)的原理對(duì)于做.NET開(kāi)發(fā)非常重要?,F(xiàn)在詳細(xì)解說(shuō)一下。

視圖狀態(tài):視圖狀態(tài)就在大家身邊不知道大家是否注意。ASP.NET是基于服務(wù)其處理事件的。當(dāng)服務(wù)器處理完事件時(shí),再返回本窗體時(shí),如果沒(méi)有視圖狀態(tài),原來(lái)的數(shù)據(jù)將不會(huì)在有。這樣說(shuō)也許會(huì)暈。舉個(gè)列子,比如有一個(gè)網(wǎng)站需要你注冊(cè)成為會(huì)員。當(dāng)你填完信息,(一般來(lái)說(shuō)頁(yè)面會(huì)轉(zhuǎn)向別的地方)這里為了說(shuō)明問(wèn)題,我們讓他返回原來(lái)的頁(yè)面繼續(xù)操作,如果沒(méi)有視圖狀態(tài),則你以前填的數(shù)據(jù)都沒(méi)有了。如果有視圖狀態(tài),則原來(lái)的數(shù)據(jù)還在。試圖狀態(tài)在一些時(shí)候很有用。比如說(shuō)分級(jí)驗(yàn)證時(shí)。

那么.NET是用什么方法保持試圖狀態(tài)呢?這里微軟采用了一種特殊的方法。在瀏覽器打開(kāi)網(wǎng)頁(yè)的源代碼,你會(huì)發(fā)現(xiàn)一段你在編輯網(wǎng)頁(yè)時(shí),沒(méi)有添加的一個(gè)HTML控件。

形式是這樣的:

這是.NET自動(dòng)給你添加的。它也是視圖狀態(tài)能夠?qū)崿F(xiàn)的功臣。因?yàn)檫@個(gè)空間是隱藏的,所以不會(huì)破壞頁(yè)面的布局。空件中的value中的值就是就是各個(gè)空件以及控件中的數(shù)據(jù)(狀態(tài))。這些數(shù)據(jù)是經(jīng)過(guò)哈希函數(shù)加密過(guò)的。這是為了安全考慮。當(dāng)網(wǎng)頁(yè)提交時(shí),瀏覽器首先將當(dāng)前網(wǎng)頁(yè)中的各種狀態(tài)(包括控件以及控件中的數(shù)據(jù))保存到這個(gè)HTML字段中。當(dāng)網(wǎng)頁(yè)再次返回瀏覽器時(shí),在自動(dòng)把這些狀態(tài)返回給網(wǎng)頁(yè),這樣網(wǎng)頁(yè)也就恢復(fù)了狀態(tài)。

再來(lái)講講視圖狀態(tài)需要注意的問(wèn)題。

視圖狀態(tài)只能在本網(wǎng)頁(yè)與服務(wù)器之間保持,不能在不同網(wǎng)頁(yè)之間連接時(shí)保持。默認(rèn)情況下,幾乎所有的ASP.NET控件都有保持視圖狀態(tài)的功能。

視圖狀態(tài)有很多優(yōu)點(diǎn),但同樣(世上每件事都具有兩面性,一個(gè)好的技術(shù)也不列外)有些缺點(diǎn)。首先是安全,雖然數(shù)據(jù)是經(jīng)過(guò)加密,但對(duì)于黑客中的骨灰級(jí)人物,還是很不安全的。再次,你可以想如果你的頁(yè)面包括幾百條記錄,頁(yè)面很復(fù)雜,這是必會(huì)影響網(wǎng)頁(yè)的加載速度。

應(yīng)用程序狀態(tài)(Application):Application對(duì)象是應(yīng)用程序的全局性對(duì)象。用于存放應(yīng)用程序的全局共享資源。他的本質(zhì)是HttpApplicationState類的一個(gè)實(shí)例。當(dāng)用戶***次反問(wèn)某虛目錄中的資源時(shí),就被創(chuàng)建。也就是說(shuō)網(wǎng)站***次在互聯(lián)網(wǎng)上發(fā)布,這時(shí)有一個(gè)用戶剛好訪問(wèn)你的虛擬目錄資源,那么Application對(duì)象就已經(jīng)建立。在資源與應(yīng)用程序之間建立了一個(gè)緩沖區(qū)。

應(yīng)用程序狀態(tài)只有在網(wǎng)站運(yùn)行時(shí)存在。當(dāng)應(yīng)用程序推出或服務(wù)器關(guān)閉時(shí)(更慘一點(diǎn)服務(wù)器崩潰了),應(yīng)用程序狀態(tài)中保存的數(shù)據(jù)機(jī)會(huì)丟失和損壞。所以對(duì)于需要***保留的資源還是在數(shù)據(jù)庫(kù)中持久化保存的好。

介紹一些Application對(duì)象的一些操作方法。

Application對(duì)象當(dāng)然是采用最經(jīng)典的“鍵-值”對(duì)的字典方法來(lái)定義。其中鍵為字符串代表Application對(duì)象的名稱。值可以是任何類型的數(shù)據(jù)。(例如HTML,CSS,SQL都可以)。舉個(gè)例子:

Application["source"]="special source";string message =Application["source"].ToString();在Application中添加刪除保存的對(duì)象。Application.Add("source",''special source");Application.remove("source");來(lái)一個(gè)狠一點(diǎn)的操作,把Application中的對(duì)象全部請(qǐng)出去。Application.Clear();或Appication.RemoveAll();信息共享自然會(huì)引來(lái)一個(gè)問(wèn)題,資源的同步競(jìng)爭(zhēng)。這類問(wèn)題解決當(dāng)然要靠鎖了。Applicatin.Lock()//加鎖鎖定資源,不讓其他進(jìn)程訪問(wèn)。functions(Application["source"]);//一些操作Application對(duì)象的操作。Application.UnLock();//解除鎖定。

會(huì)話狀態(tài)(Session):Session對(duì)象用來(lái)保存單個(gè)用戶的狀態(tài)。在網(wǎng)站中,每個(gè)新訪問(wèn)的用戶都將產(chǎn)生自己的會(huì)話(Session)對(duì)象。這個(gè)Session對(duì)象是在服務(wù)器端進(jìn)行管理,只能為它所綁定的用戶服務(wù)。如果另一位用戶也訪問(wèn)網(wǎng)站,他也經(jīng)擁有自己的Sesiion對(duì)象。兩個(gè)用戶的Session對(duì)象即使同名,也不能共享同一個(gè)Session對(duì)象。各是各的。

實(shí)際上Session對(duì)象是HttpSessionState類的實(shí)例。有很多屬性和方法,大家不妨去看看。這里不闡述了。

就一些例子吧。

Session["source"]="special source";string message =Session["source"].ToString();

應(yīng)用程序狀態(tài)在網(wǎng)站中總是可用的,這.NET Framework的內(nèi)部機(jī)制,我們不去管。我們來(lái)看看Session對(duì)象。由于在Machine.config配置文件中的Session設(shè)置是啟動(dòng)的,因此不需要額外的步驟就能使用它。盡管如此我們還是要知道一些原理和本質(zhì)。Machine.config和應(yīng)用程序的Web.config中的設(shè)置決定了是啟動(dòng)還是關(guān)閉Session對(duì)象。當(dāng)然如果想要延遲到需要時(shí),在啟用也可以。我們可以在頁(yè)面一級(jí)設(shè)置。

//這條語(yǔ)句的作用是在這個(gè)頁(yè)面中不能使用會(huì)話狀態(tài)(Session)。

Session對(duì)象有一個(gè)Timeout屬性可以設(shè)置Session對(duì)象的生命周期。它以分鐘為單位,默認(rèn)是20分鐘。如果再有效時(shí)間內(nèi)沒(méi)有連接服務(wù)器,那么Session的所有設(shè)置都將失效。如果需要終止Session對(duì)象,可以用它的Abandon()方法。

差點(diǎn)忘了,Session有一點(diǎn)很重要,補(bǔ)充一下。

session中的關(guān)鍵字是不區(qū)分大小寫的。因此不要用大小寫來(lái)區(qū)分Session變量。也就是說(shuō)Session["source"]與Session["SOURCE"]是一樣的。如果刪掉其中一個(gè),會(huì)有意想不到的結(jié)果。

Cookie狀態(tài):Coolkie 狀態(tài)一是用來(lái)保存一個(gè)用戶資源的狀態(tài)。和Session不同的是它存儲(chǔ)在瀏覽器端。在Cookie中只能含有較少的信息,通常不超過(guò)4096個(gè)字節(jié)(有些較新的瀏覽器可以達(dá)到8192個(gè)i字節(jié)).在ASP.NET中,Session對(duì)象和Cookie對(duì)象現(xiàn)結(jié)合來(lái)識(shí)別用戶。每當(dāng)用戶開(kāi)始連接站點(diǎn)時(shí),系統(tǒng)將自動(dòng)在內(nèi)存塊中創(chuàng)建一個(gè)和用戶有關(guān)的Session對(duì)象,同時(shí)創(chuàng)建一個(gè)Cookie對(duì)象來(lái)保存用戶ID并把它保存在瀏覽器端,與當(dāng)前的用戶***的聯(lián)系起來(lái)。這樣當(dāng)用戶下一次在訪問(wèn)時(shí),用戶被要求提交用戶的TD也就是CooKie,Cookie和Session相對(duì)照以正確的還原原來(lái)的會(huì)話狀態(tài)。這就是無(wú)狀態(tài)協(xié)議Http條件下保持用戶狀態(tài)的方法。

向?yàn)g覽器寫入Cookie的方法是這樣的。舉個(gè)例子:

HttpCookie cookie=new HttpCookie("userNameId");//創(chuàng)建一個(gè)Cookie對(duì)象,并且賦值。cookie.Value="userNameId"http://如果已經(jīng)存在一Cookie,也可以這樣給它賦值。cookie.Expires=DateTime.Now+TimeSpan;//設(shè)定cookie的生命周期,這里的TimeSpan是TimeSpan類的一個(gè)實(shí)例。cookie的默認(rèn)時(shí)間是20分鐘。Response.Cookies.Add(cookie);//向?yàn)g覽器中寫入Cookie.HttpCookie cookie1=Request.Cookies["cookie"];//讀取Cookie.

關(guān)于ASP.NET的四種狀態(tài)分別是哪些問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


分享名稱:ASP.NET的四種狀態(tài)分別是哪些
網(wǎng)頁(yè)路徑:http://weahome.cn/article/pgdods.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部