首頁 >後端開發 >C#.Net教程 >教你解決ASP session遺失的方法

教你解決ASP session遺失的方法

Y2J
Y2J原創
2017-05-18 11:33:171806瀏覽

 也許很多asp開發者都會遇到這樣的情況:在會話期間(session)無故失去sessio n。換而言之,遺失了SessionID,同樣session級的變數也會遺失。

很多session遺失的原因是因為錯誤的程式或是錯誤的虛擬目錄結構。 

SessionID 的改變有以下幾個原因。 

原因一: 

Netscape的瀏覽器會認為"/App/user.asp"跟"/app/user.asp"是兩個不同的程式。它會自動地開始一個新的會話期(new session)。所以,才你的網站上一定要統一字母的大小寫。 

原因二: 

另外一個是原因是 Session.Timeout 的值。 

Timeout這個屬性是用來設定Session的逾時時間的,一分鐘為單位。假如一個用戶,在一個Timeout的時間內沒有刷新或請求頁面,那麼會話就會結束(the se ssion ends)。當你再次請求頁面的時候,一個新的會話有會開始。 

確信Timeout的值,是分鐘的。

格式: Session.Timeout [ = nMinutes] 

原因三: 

假如使用者把他們的瀏覽器的cookie#關了,當然 session就不能保持。因為session的保持是要靠cookie的。 

要維持Session的狀態,瀏覽器就必須支援cookie,而且在開啟的狀態。你當然可以用其他的方法 

原因四: 

常犯的錯誤就是,建立了錯誤的目錄結構。像是下面的目錄結構: 

root 放了global.asa 

\virtual_root 沒有global.asa 

\another_virtual_root 沒有global. 


\another_virtual_root 沒有global.asa 


個virtual roots的頁面,就會執行相同的global.asa(root上的那個) 

#另外的一個目錄結構: 

root 沒有global.asa 

\ virtual 放了global.asa 

\another_virtual_root 另外一個global.asa 

每一個不同目錄下的global.asa都會各自執行,當然執行的程式碼就不同了。不過如果裡面的程式碼一樣,就令當別說。 :) 


所以你在請求不同目錄下頁面,將會導致不同的global.asa被執行。不同的變數被調用,不同的session id被建立....之前的有用的信息都被破壞了。
以下是詳細的解釋: 

當你先瀏覽子虛擬程式上的頁面(child virtual application),然後再去瀏覽子虛擬程式的上一層的父虛擬程式(parent virtual root)的頁面。那些變數就會遺失、破壞。看下面的
表格
: 

請求子程式1遺失子程式2遺失 

先請                   只在子程序1前請     Root     不會              Root     會        會 

#「相關推薦】

# 1. 

ASP免費影片教學

2.

介紹ASP中Session物件的三種方法

3. 

詳解ASP中Session的使用技巧

4.

 ASP session簡單範例

#5. 

關於ASPsion的詳細介紹

####################################

以上是教你解決ASP session遺失的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn