登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

ASP和ASP.Net共享Session解决办法  

2009-12-11 17:06:10|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在原有的asp程序中用asp.net添加功能模块,共享SESSIONs是一个难点,下面介绍一种较为简洁的方法,可以在asp和asp.net中共享session会话。

登录页面使用C#重新创建,在成功登录后执行语句:

Response.Write("<script language='javascript'>window.open('ASPXTOASP.aspx','new');</script>");

打开aspxtoasp.aspx页面,action设为aspxtoasp.asp,即可将session值post到asp页面,因为是单向传递,不用在其他页面重复执行动作,经测试,传递成功!

Aspxtoasp.aspx代码如下:

<script language="C#" runat="server">
Response.Write( "<form name=t id=t action=ASPXTOASP.asp method=post>" );
foreach(object it in Session.Contents)
{
      Response.Write("<input type=hidden name=" + it.ToString());
      Response.Write( " value=" + Session[it.ToString()].ToString() + " >");
}
Response.Write("</FORM>");
Response.Write("<script>t.submit();</script>");
</script>

Aspxtoasp.asp代码如下:

<%
for i=1 to Request.Form.Count
      Session(Request.Form.Key(i))=Request.Form(i)
next
Response.End
%>
<script language="JavaScript">
      window.close();
</script>

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

  评论这张
 
阅读(633)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018