在ASP與ASP.NET之間共享Session值

 儘管微軟盡了最大努力來使ASP和ASP.NET能不費力地共存,但還是有一個地方是一塊絆腳石-----Session的值。幸運的是ASP.NET在Session處理方面做了較爲明顯的改善,使得無法將傳統的Session值傳給.Net 這個問題不那麼明顯了。不幸的是,這個方法不是很簡單。在嘗試着尋找合適的解決方法的過程中,我碰到了2個不錯的方法,在這提一下。第一個就是將session的值存到一個傳統的中間頁面的hidden 的input裏,然後再把這個頁面的值提交到一個.net的中間頁面,該頁面將把form裏的值存到session。這是一個簡單有效的方法,但它不能反過來使用。因爲在.NET裏你無法分辨你提交的頁面是哪個。每個頁面只能PostBack到本頁。第二個方法可能就似乎一個比較實際的方法了。微軟的Billy Yuen弄出了一個有效的方法。雖然它的代碼是一流的,整體上也沒有什麼明顯的漏洞,但在我自己的系統上,它就是不起作用 。:( 當然,如果這個東西對你有用,你就無須繼續看我的了。多謝瀏覽 :) 如果你決定繼續讀下去,那麼 我就簡單的說說我的方法.首先,它需要一個數據庫,哪種類型的都可以。(不過這裏的代碼是爲SQL Server所寫的) 當一個頁面需要重定位到(Redirect)到另外一個頁面,而兩個頁面使用的分別是ASP和ASP.NET,那麼就會產生二箇中間頁面。負責收集源數據的中間頁面將把ASP頁裏的和ASP.NET裏的session存到數據庫的一個元組裏,這樣它們就可以共用一個數據庫的GUID了,這麼做是因爲傳統的ASP和.NET使用的是不同的SessionID格式,因此我們不用SessionID而使用數據庫記錄的GUID。收集源數據的中間頁將把這個GUID通過一個 Querystring傳遞到發送數據的中間頁面,發送數據的中間頁面將通過數據庫讀取兩方的session的值,存成目標頁面能識別的session方式,然後清空對應的記錄,再重新定位到目標頁面。這個方法支持雙向的轉化。安裝步驟: 1.在你的sql server上運行ASPSessionState.SQL腳本 2.將所有的.asp和.aspx複製到你的站點的某個文件夾裏 3.修改在SessionTransfer.asp和SessionTransfer.aspx.cn裏的文件裏的連接數據庫的內容。 4.編譯Aspx的文件使用:在超級鏈接或者redirect裏使用,格式如下從ASP頁面到ASP.NET頁面 SessionTransfer.asp?dir=2aspx&url= 從ASP.NET頁面到ASP頁面 SessionTransfer.aspx?dir=2asp&url=
代碼下載
http://www.asp101.com/articles/sidney/sharingsessionstate/session_transfer.zip
發佈了16 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章