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還能在另外一台主機上保持。