2009-10-06 61 views
3

我們有一個廣泛的經典ASP網站,我們正在尋求升級到ASP .Net(最可能是最新版本)。顯然,一次升級所有的頁面將是一個leviathan任務,所以我們只打算在ASP.Net中編寫新的頁面(和頁面重寫)。經典的ASP到ASP.Net一次性會話數據複製

有兩個障礙,這樣做:

  1. 我不知道如何訪問ASP.NET的傳統ASP會話數據。這隻需設置一次,因爲除登錄頁面以外的任何頁面都不會修改它。我寧願對傳統的ASP登錄頁面做最小的改動,但這只是一個小偏好。

  2. ASP和ASP .Net會話將不得不在同一時間超時,以保持版本差異無縫。

請問誰能提供任何幫助?

在此先感謝。

回答

7

我們面臨同樣的任務(不好玩)。由於Asp.Net會話和Asp會話不能共享,因此我們使用了各自適用於各種情況的方法。

  • 在某些情況下,我們使用了Cookie而不是會話。
  • 在其他情況下,我們設置自動發佈表單,以便如果用戶的會話信息在傳統的ASP頁面中設置,在會話信息被設置後,我們重定向到一個Asp.Net頁面,該頁面讀取查詢字符串參數並使用那些爲Asp.Net設置相同的會話變量。然後,一旦Asp.Net頁面設置了相同的變量,該頁面就會重定向到原先登錄頁面以前指向的任何頁面。反過來也一樣。

因此,在第二個方案中,例如流會改變來自:

用戶試圖訪問某些受保護的 內容頁面 - >重定向到登錄 頁 - 在>日誌 - >會議根據登錄成功信息設置 - >重定向 回到內容頁面。

用戶試圖訪問某些受保護的 內容頁面 - >重定向到登錄 頁面 - >日誌中 - >會話信息基於登錄成功設置 - >重定向 到。網頁,傳遞登錄 憑證等 - > aspx頁面設置會話信息,然後立即 重定向回內容頁面。

我們知道這是一種黑客行爲,但它在短期內奏效,直到我們能夠將所有網站都轉換爲全部。

+0

+1感謝您的回答,我當然會認爲這是一種解決方法。 – 2009-10-07 09:16:48

+0

我們也這樣做了,只是將會話內容直接發佈到接收的.NET頁面(反之亦然),我們將它們存儲在相互訪問的數據庫中,並只傳遞了訪問令牌。 – 2010-01-08 20:26:23

1

使用較新的IIS設置可能會有更好的方法來實現這一點(必須承認我沒有及時瞭解IIS7可以做什麼新功能)。但是你可以從你的ASP登錄頁面執行一個XMLRequest到一個ASP.Net頁面。如果邏輯足夠簡單,您可以在Post數據中傳遞所需的設置,或者使用.net頁面填充會話數據本身。 .net頁面然後會返回一個Cookie中的.net會話ID,您需要在ASP用戶cookie集合中設置此值,以便該用戶具有.net和經典ASP會話cookie。

這樣做。

+0

+1我將研究IIS7的功能。感謝有關XMLRequest的提醒,這將是解決多重重定向問題的好方法。 – 2009-10-07 09:20:00

0

我幾年前通過使用數據庫實現了這一點。

微軟有一個漂亮的good article就可以了,雖然現在有點老了。