asp 与 asp.net 共享session

王朝asp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

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

代码中还有要改进的地方也请各位大虾赐教。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有