asp 的 session 轉到 aspx 可用的 session

在條件限制不能使用 cookie 的情況下
IIS 中的虛擬目錄 Session 無法共用
就算在相同目錄 asp 與 aspx 也無法共用
考慮安全性與便利性

利用 asp 將所有的 Session 使用 Form Post 的方法傳遞給 aspx 的程式

aspSession.asp
-----------------------------------------------
<html>
    <head>
        <title>ASP Session</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>

    <body>
        <%
        Response.CodePage = 65001
        Response.CharSet = "utf-8"
        Response.Write("<FORM name=trans id=trans action=aspxSession.aspx method=post >")
     
        For Each Item  In Session.Contents
            If Item <> "SYS_MailSender" then
                Response.Write("<input type=hidden name=" & Item)
                Response.Write( " value=" & Session(item) & " >")
                'Response.Redirect("aspxSession.aspx?target=" + Session(item))
            End If
        Next

        Response.Write("</FORM>")
        Response.Write("<scr" + "ipt>trans.submit();</scr" + "ipt>")
        %>
    </body>
</html>
-----------------------------------------------

再由 aspx 的程式重新設定 Session

aspxSession.aspx.vb
-----------------------------------------------
Public Class aspxSession
    Inherits System.Web.UI.Page

    ' ASP 寫進的 Session 必須要在這轉成 ASP.NET
    '本來要用 Request.QueryString 來處理的
    '後來考慮安全性,所以用aspSession.asp/Form Action 的方式
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'Session("Emp_Id") = Request.QueryString("target")

        For i As Integer = 0 To Request.Form.Count - 1
            Session(Request.Form.GetKey(i)) = Request.Form(i)
        Next

        If Session("Emp_Id") = "" Then
            Response.Redirect("~/")
        Else
            Response.Redirect("~/eFormQuot/undertake.aspx")
        End If

    End Sub

End Class
-----------------------------------------------

沒有留言:

張貼留言