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 "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 );

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表单提交。