2009-11-18 168 views
1

有沒有辦法共享ASP3和ASP.NET之間的會話?ASP3和ASP.NET會話共享

感謝

+0

在我們的一個應用程序中,我們使用網址中的querystrings將asp.net會話數據傳遞給經典的asp會話數據。這不是很好,但保存了我們的重寫。 – adrianos 2009-11-18 08:33:12

+0

你能解釋更多嗎? TY。 – 2009-11-18 12:57:31

回答

2

儘管如此,使ASP和ASP.NET共存不費吹灰之力微軟盡了最大努力,一個區域仍然是一個絆腳石......會話狀態。幸運的是,ASP.NET升級會話狀態管理的優勢遠遠超過了不能將「Classic」會話信息傳遞給.NET的不便。不幸的是沒有簡單的解決方案;我能提供的最多是一個易於實施的解決方法。

爲了找到合適的解決方案,我遇到了兩個值得一提的好選擇。第一個涉及將會話信息解析到「經典」中間頁面上的隱藏表單字段,然後將頁面提交到將表單字段加載到會話狀態的.NET中間頁面。這是一個很好的簡單解決方案,但它不能同時工作。在.NET中,您無法指定您提交給的頁面。每個頁面都必須自行回發。

第二個選項可能更接近實際解決方案而不是解決方法。微軟的Billy Yuen開發了一個有效的解決方案。代碼優雅,集成看起來是無縫的,但我無法在我的系統上工作(記得我說沒有簡單的解決方案,並不是沒有解決方案)。如果這個解決方案適合你,太棒了!你不需要我的代碼,你會很高興地將會話信息從「Classic」傳遞給.NET,就像它正在流行一樣,謝謝你停下來。

好的,如果您仍在閱讀,請簡單介紹一下我創建的解決方法。它需要一個數據庫,但是哪種類型的數據庫並不重要(儘管代碼是爲SQL Server編寫的)。當一個頁面(源頁面)想要重定向到使用不同版本的ASP的另一個頁面(目標頁面)時,它會調用一箇中間頁面。源中間頁面使用每個會話變量並將其與全局唯一ID(GUID)一起添加到數據庫。由於「Classic」和.NET使用不同的SessionID格式,因此不可能使用SessionID,因此使用GUID。源中間頁然後通過Querystring變量將GUID傳遞到目標中間頁。目標中間頁面從數據庫檢索會話信息,自行清理,然後重定向到目標頁面。它與第一種解決方法類似,但支持在兩個方向上傳輸狀態。 代碼使用 安裝

  1. 將舉行臨時會議信息的數據庫上運行的「ASPSessionState.sql」的SQL查詢。
  2. 將.asp和.aspx。*(SessionTransfer.aspx和SessionTransfer.aspx.cs)文件複製到您網站上的文件夾中。
  3. 更新「SessionTransfer.asp」和「SessionTransfer.aspx.cs」文件中的連接對象信息。它位於每個文件的三個位置(抱歉關於未合併連接信息)。
  4. 編譯aspx文件。
  5. .asp和.aspx。*文件必須全部位於相同的文件夾才能工作。

用法

對於一個超鏈接(定位標記)的使用或一個響應。重定向,設置的目標網址爲以下之一:

從ASP 「經典」 頁:

SessionTransfer.asp?dir=2aspx&url=<asp_dotnet_url> 

從ASP.NET頁:

SessionTransfer.aspx?dir=2asp&url=<asp_classic_url> 

代碼將轉移會話信息並將用戶重定向到由or指定的url。 下載

您可以從here下載代碼:session_transfer.zip(4.6 KB)。

0

可以看看NSession它允許使用狀態服務器在Classic ASP和ASP.Net之間共享會話狀態。很容易設置只是配置應用程序使用狀態服務器的會話和註冊幾個DLL文件。