DavidJGu's Blog

       尼采说,宁可追求虚无也不能无所追求!  Keeping is harder than winning
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

asp和aspx之间的session共享

Posted on 2005-05-09 15:59  Let's DotNet  阅读(1523)  评论(0编辑  收藏  举报
asp和aspx之间的session是不能直接相互读取的;http://www.yicong.com/Article_Show.asp?ArticleID=116&ArticlePage=1提供了一种方法。我觉得这个方法不是很好。如果只需要在asp页面中读aspx的session,则可以采用javascript和一个中间过渡页面
post即可;如果session比较复杂可以通过xmlrequest直接读aspx的session变量。

过渡页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html>  <head>
  
<title></title>
  
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
  
<meta name="ProgId" content="VisualStudio.HTML">
  
<meta name="Originator" content="Microsoft Visual Studio .NET 7.1">  </head>  <body>
  
<form id='mainform' method="post" action="ttt2.asp">
   
<INPUT id="txtSession" type="hidden" name="Hidden1">
  
</form>
<script language="javascript">
var getSessionUrl = "GetSession.aspx";
var req;
checkStatus();
function checkStatus()
{
 createRequester();
 
if(req != null)
 
{
  req.onreadystatechange 
= process;
  req.open(
"GET", getSessionUrl, true);
  req.send(
null);
 }

 
else{
  alert('no response
!');
 }

}

 
function process()
{
 
if(req.readyState == 4)
 
{
  
if (req.status == 200)
  

   
if(req.responseText!='') 
   
{   
    
return req.responseText; 
   }

   
else
   
{
    
return "no data"
   }

  }

  
else
  
{
   
return "no data";
  }

 }

 
else
 
{
  
return "no data";
 }

}

 
function createRequester(){
 
try{
  req 
= new ActiveXObject("Msxml2.XMLHTTP");  }
catch(e){
  
try
   req 
= new ActiveXObject("Microsoft.XMLHTTP");}
catch(oc){
   req 
= null;
   }

 }

 
 
if(!req && typeof XMLHttpRequest != "undefined")  { req = new XMLHttpRequest(); }  return req; }

  
</script>
 
</body>
 
<script language="javascript">
  document.getElementById(
"txtSession").value = process();
  mainform.submit();
   
</script>
</html>
 
被请求读取session的页面
public class GetSession : System.Web.UI.Page  {
  
private void Page_Load(object sender, System.EventArgs e)
  
{
   
// 在此处放置用户代码以初始化页面
   Response.Clear();
   Response.Write(Page.Session[
"URL"].ToString());
   Response.End();
  }

 
  
#region Web 窗体设计器生成的代码
  
override protected void OnInit(EventArgs e)
  
{
   
//
   
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   
//
   InitializeComponent();
   
base.OnInit(e);
  }

  
  
/// <summary>
  
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
  
/// 此方法的内容。
  
/// </summary>

  private void InitializeComponent()
  
{    
   
this.Load += new System.EventHandler(this.Page_Load);
  }

  
#endregion

 }


“URL”是测试的session名。