把ASP應用中的Session傳遞給asp.net應用

來源:互聯網
上載者:User
ASP.NET APPLICATION要使用原來的ASP使用者系統,於是問題出現了,ASP APPLICATION怎樣才能讓使用者登入的狀態及使用者資訊在ASP.NET中依然有效呢。於是我們考慮用構造FORM來自動認可傳遞ASP應用中的Session變數。
例子如下
ASP應用URL為 http://127.0.0.1/asp/,並在ASP.NET應用中的web.config設定
  <!--設定ASP應用的URL-->
  <add key="aspURL" value=" http://127.0.0.1/asp/" />

在ASP應用中增加兩個ASP頁面system.asp和autoPostForm.asp
<!--system.asp-->
<%
Session("UID")="user"    
session("isPass")="ok"    
Server.Transfer("autoPostForm.asp")
%>

<!--autoPostForm.asp-->
<%
Response.Write("<form name=t id=t action=""http://127.0.0.1/aspdotnet/getSession.aspx""

method=post >")
Response.Write("<input type=hidden name=UID" )
Response.Write( " value=" & Session("UID") & " >")
Response.Write("<input type=hidden name=isPass" )
Response.Write( " value=" & Session("isPass") & " >")
Response.Write("</form>")
Response.Write("<script>t.submit();</script>")
%>

在ASP.net應用中用頁面getSession.aspx來接受傳遞過來的Session變數值

getSession.aspx.cs程式碼片段:
private void Page_Load(object sender, System.EventArgs e)
  {
  
  if(!Page.IsPostBack)
  {
   string aspurl=ConfigurationSettings.AppSettings["aspURL"].Trim();      
   try
   {
    string fromurl=Request.ServerVariables["HTTP_REFERER"];
    
    //驗證是否從asp應用中提交過來
    if(fromurl.StartsWith(aspurl))
    {
     string uid=Request["UID"].ToString();
     string state=Request["isPass"].ToString();
    
      if(uid!="" && state=="ok")
      {
       //表明使用者在asp系統中已登入成功 
    
      }
 
    }
    else
    {
     Response.Write("<script>alert('非法使用者或未登入使用者');top.location.href='" + aspurl +

"';</script>");
    
    }
    
   }
   catch
   {
    Response.Redirect(aspurl);
   }

  }
}

當然,上述例子只是為解決特定的問題,如果要寫成通用的,則需要做如下修改
就在autoPostForm.asp使用 

For each sItem in Session.Contents 
Response.Write("<input type=hidden name=" & sItem) 
Response.Write( " value=" & Session.Contents(sitem) & " >") 
next 

而在getSession.aspx頁面用下面的代碼來接受並用同名Session變數儲存 

for(int i=0;i<Request.Form.Count;i++) 

Session[Request.Form.GetKey(i)]=Request.Form[i].ToString(); 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.