您好,登錄后才能下訂單哦!
這篇文章主要介紹了解決ASP session丟失的問題,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
也許很多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.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丟失
先請求 Root 不會 不會
只在子程序1之前請求 Root 不會 會
只在子程序2之前請求 Root 會 不會
最后請求 Root 會 會
感謝你能夠認真閱讀完這篇文章,希望小編分享解決ASP session丟失的問題內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。