親密接觸ASP.Net(15)
發(fā)表時間:2024-02-22 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]ASP.Net中狀態(tài)保存在ASP保存一些共享、個人狀態(tài),使用的是Application、Session、Cookie這三種。呵呵。在ASP.Net中M除了繼承Application等外,又給我們新的一種狀態(tài)變量信息State,它是用來保存WEB控件的狀態(tài)的變量,很新鮮吧,一定要快點(diǎn)知道啦:)不好意...
ASP.Net中狀態(tài)保存
在ASP保存一些共享、個人狀態(tài),使用的是Application、Session、Cookie這三種。呵呵。在ASP.Net中M$除了繼承Application等外,又給我們新的一種狀態(tài)變量信息State,它是用來保存WEB控件的狀態(tài)的變量,很新鮮吧,一定要快點(diǎn)知道啦:)
不好意思,飛刀還是從原始一步步來說吧。先從Application講起。(臺下一片吼聲),沒有辦法,為了有個階梯性,還是不應(yīng)當(dāng)過早接觸新東東啦:)
Application
在ASP.Net中Application用法與ASP是一樣的,幾乎是沒有什么說的,但是它多了兩個特別有用的事件,Application_OnBeginRequest和Application_OnEndRequest。他們的和原來的Application_OnStart和Application_OnEnd一樣是放在global文件中的(注意這個文件在ASP中名字是global.asa,在ASP.Net中是global.asax)。
注:這個事件,寫不寫On是一樣的。如Application_End與Application_OnEnd是一樣的
Application_OnStart是在整個ASP.Net應(yīng)用首先被觸發(fā)的事件,也就是在一個虛擬目錄中第一個ASP.Net程序執(zhí)行時觸發(fā),Application_OnEnd就正好相反,在整個應(yīng)用停止時被觸發(fā)(通常發(fā)生在服務(wù)器被重啟/關(guān)機(jī)時)。Application_OnRequestStart和Application_OnRequestEnd則是在每一個ASP.Net程序被請求時就發(fā)生,也就是說客戶訪問一次一個ASP.Net程序,這兩個事件就會被觸發(fā)。我們可以從下面的程序看到他的應(yīng)用.我們先建立一個global.asax,內(nèi)容如下:
<script language="C#" runat="server">
void Application_OnBeginRequest(Object sender, EventArgs E)
{
Response.Write("Request is Starting...<br>");
}
void Application_OnEndRequest(Object sender, EventArgs E)
{
Response.Write("Request is Ending...<br>");
}
</script>
然后將其放到本虛擬目錄的根目錄下,然后我們隨便打開一個什么aspx文件,這里我們打開named.aspx文件,看看:
圖19-1
看到?jīng)]有,這個頁面的上面和下面出現(xiàn)了我們在global.asax中定義的語句Request is Starting...和Request is Ending...這個不是我們在這個文件中獨(dú)加的,我們將會再任何一個ASP.Net文件中看到它的影子。
Session
ASP.Net中的Session是我見過最好的處理,是其它動態(tài)網(wǎng)頁技術(shù)不能比擬的。ASP.Net中的Session再也不需要Cookies的支持,也就是說如果用戶關(guān)閉了Cookie,Session的值一樣也可以被保存。
不過,我們需要對config.web文件進(jìn)行一些配制,因?yàn)樵谄渲姓业疥P(guān)于Session的設(shè)置文本,如:
<sessionstate
cookieless="false"
/>
把cookieless="false" 改成cookieless="true" ,那么以后Session就不儲存在cookies中了,而在儲存在URL中。
圖15-2
上面的黑圈中的東東就是儲存的Session值,當(dāng)然這是被編碼的,我們無法知道它的直實(shí)值。
其實(shí),我發(fā)現(xiàn),不用改config.web文件,關(guān)掉cookies后,不用URL也照樣能傳遞session值,這種情況下Session是如何保值的,這個就不太清楚了:)
Session還可保持不死之術(shù),就是當(dāng)服務(wù)器重啟,還是能保證Session中的值不變,不過這又要改動config.web文件。也是通過下面的語句設(shè)定.
<sessionstate
inproc="false"
server="localhost"
port="42424"
/>
是不是發(fā)現(xiàn)這里的Session是不是很強(qiáng)大。海,把localhost改成您要的主機(jī),Session還能在另外一臺主機(jī)上保持。