关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>ASP>>正文|应用技巧:ASP和ASP.Net共享Session解决办法

应用技巧:ASP和ASP.Net共享Session解决办法

[ 来路:21kn.com    时间:2007-7-8 0:51:29    点击: ]

 

在原有的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 
’-------------------------------------------- 
%>

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:ASP应用技巧:生成静态网页的一种方法  下一篇:将ASP动态网页转换成HTM静态页面的方法

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号