ASP.Net中狀態保存
在ASP保存一些共享、個人狀態,使用的是application、session、CookIE這三種。呵呵。在ASP.Net中M$除了繼承Application等外,又給我們新的一種狀態變量信息State,它是用來保存WEB控件的狀態的變量,很新鮮吧,一定要快點知道啦:)
不好意思,飛刀還是從原始一步步來說吧。先從Application講起。(台下一片吼聲),沒有辦法,為了有個階梯性,還是不應當過早接觸新東東啦:)
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應用首先被觸發的事件,也就是在一個虛擬目錄中第一個ASP.Net程序執行時觸發,Application_OnEnd就正好相反,在整個應用停止時被觸發(通常發生在服務器被重啟/關機時)。Application_OnRequestStart和Application_OnRequestEnd則是在每一個ASP.Net程序被請求時就發生,也就是說客戶訪問一次一個ASP.Net程序,這兩個事件就會被觸發。我們可以從下面的程序看到他的應用.我們先建立一個global.asax,內容如下:
<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
看到沒有,這個頁面的上面和下面出現了我們在global.asax中定義的語句Request is Starting...和Request is Ending...這個不是我們在這個文件中獨加的,我們將會再任何一個ASP.Net文件中看到它的影子。
Session
ASP.Net中的Session是我見過最好的處理,是其它動態網頁技術不能比擬的。ASP.Net中的Session再也不需要Cookies的支持,也就是說如果用戶關閉了CookIE,Session的值一樣也可以被保存。
不過,我們需要對config.web文件進行一些配制,因為在其中找到關於Session的設置文本,如:
<sessionstate
cookIEless="false"
/>
把cookieless="false" 改成cookieless="true" ,那麼以後Session就不儲存在cookIEs中了,而在儲存在URL中。
圖15-2
上面的黑圈中的東東就是儲存的Session值,當然這是被編碼的,我們無法知道它的直實值。
其實,我發現,不用改config.web文件,關掉cookIEs後,不用URL也照樣能傳遞session值,這種情況下Session是如何保值的,這個就不太清楚了:)
Session還可保持不死之術,就是當服務器重啟,還是能保證Session中的值不變,不過這又要改動config.web文件。也是通過下面的語句設定.
<sessionstate
inPRoc="false"
server="localhost"
port="42424"
/>
是不是發現這裡的Session是不是很強大啊:),把localhost改成您要的主機,Session還能在另外一台主機上保持。