教你解決ASP session丟失的方法

來源:互聯網
上載者:User
也許很多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 會 會

【相關推薦】

1. ASP免費視頻教程

2.介紹ASP中Session對象的三種方法

3. 詳解ASP中Session的提示

4. ASP session簡單樣本

5. 關於ASP中session的詳細介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.