asp与asp.net共用session

这是一个老话题了,因为最近用的到,所以没办法又到处找资料。微软的网站上提供的是用数据库实现的,总觉得太麻烦,也有说直接使用的,但我没有试成功。我认为直接使用是不可能的。还有一种方法,就是通过几个页面转换,我使用的也是这个方法,通过总结搜索到的资料,整理后编写了几个页面来转换。主要是通过隐藏的input来实现的。具体方法如下:

  asp 转 asp.net 页面:

     用一个asp页,把session信息写到input中,提交给asp.net页
   trans.asp
   <%
    '----------测试数据--------
    session("name")="srx"
    session("id")="1"
    session("sex")="f"
    session("pass")="asdfas"
    session("age")="23"
    session("weight")="131"
     '--------------------------

    response.write("<form name=frm id=frm action=""asptoaspx.aspx"" method=post >")

    for each item  in session.contents
     response.write("<input type=hidden name=" & item)
     response.write( " value=" & session(item) & " >")
    next

    if len(request.querystring("destpage")) >4 then  
     response.write("<input type=hidden name=destpage value=" &   request.querystring("destpage") & ">")
     end if
    response.write("</form>")
    response.write("<scr" + "ipt>frm.submit();</scr" + "ipt>")
    %>


asptoaspx.aspx
<%@ page language="c#" %>
<script language=c# runat=server>
 private void page_load(object sender, system.eventargs e)
 {
  session.timeout = 60;

  for(int i=0;i<request.form.count;i++)
  {
    session[request.form.getkey(i)]=request.form[i].tostring();
   }
  
  allsession(); //输出所有的session,使用时可注释掉
  
  try
  {
   if( session["destpage"].tostring().length >4 )
   {
     server.transfer(session["destpage"].tostring(),true);
   }
  }
  catch {}

 }
 private void allsession()
 {
  response.write ("there are " + session.contents.count +" session <i>var</i>iables<p>");
  
  foreach(object obj in session.contents)
  {
    response.write("session["+obj.tostring()+"] - "+session[obj.tostring()].tostring()+"<br>");//输出所有的session,使用时可注释掉
  }
 }
</script>


asp.net 转 asp 页面:

     用一个asp.net页,把session信息写到input中,提交给asp页


trans.aspx
<%@ page language="c#"  %>
<script language=c# runat=server>
 private void page_load(object sender, system.eventargs e)
 {
  // ----------测试数据---------
  
  session["name"] = "srx";
  session["sex"]="f";
  //----------------------------
  
  response.write("<form name=frm id=frm action=aspxtoasp.asp method=post>");
  foreach(object obj in session.contents)
  {
    response.write("<input type=hidden name='"+obj.tostring()+"'");
    response.write(" value = '"+session[obj.tostring()].tostring()+"'>");
  }
  try
  {
   if(request.querystring["destpage"].tostring().length > 4 )
   {
     response.write("<input type=hidden name='destpage'");
     response.write(" value = '"+request.querystring["destpage"].tostring()+"'>");
   }
  }
  catch{}
  response.write("</form>");
  response.write("<scr"+"ipt language='javascript'>frm.submit();</scr"+"ipt>");
 }   
</script>

aspxtoasp.asp
<%
for i=1 to request.form.count
    session(request.form.key(i))=request.form(i)
next
if len(session("destpage")) >4  then
   response.redirect(session("destpage"))
end if

'-----------------------输出所有的session------------------------------------------------

call allsession() '使用时注释掉此行代码即可

function allsession()
 response.write "there are " & session.contents.count &" session <i>var</i>iables<p>"
 dim strname, iloop  
 for each strname in session.contents'使用for each循环察看session.contents
 
   if isarray(session(strname)) then '如果session变量是一个数组? '循环打印数组的每一个元素
     for iloop = lbound(session(strname)) to ubound(session(strname))
      response.write strname & "(" & iloop & ") - " & _
      session(strname)(iloop) & "<br>"
     next
   else '其他情况,就简单打印变量的值
     response.write strname & " - " & session.contents(strname) & "<br>"
   end if
 next
end function
'------------------------------------------------------------------------------------------
%>
  代码实现的过程中,asp.net页面提交到asp页的时候不能使用server.transfer方法,所以只好用response.write来自己写form表单提交。

原文地址:https://www.cnblogs.com/biandande/p/1034935.html