zoukankan      html  css  js  c++  java
  • 把ASP应用中的Session传递给asp.net应用

    ASP.NET APPLICATION要使用原来的ASP用户系统,于是问题出现了,ASP APPLICATION怎样才能让用户登录的状态及用户信息在ASP.NET中依然有效呢。于是我们考虑用构造FORM来自动提交传递ASP应用中的Session变量。
    例子如下
    ASP应用URL为http://127.0.0.1/asp/,并在ASP.NET应用中的web.config设定
      <!--设定ASP应用的URL-->
      <add key="aspURL" value="http://127.0.0.1/asp/" />

    在ASP应用中增加两个ASP页面system.asp和autoPostForm.asp
    <!--system.asp-->
    <%
    Session("UID")="user"    
    session("isPass")="ok"    
    Server.Transfer("autoPostForm.asp")
    %>

    <!--autoPostForm.asp-->
    <%
    Response.Write("<form name=t id=t action=""http://127.0.0.1/aspdotnet/getSession.aspx""

    method=post >")
    Response.Write("<input type=hidden name=UID" )
    Response.Write( " value=" & Session("UID") & " >")
    Response.Write("<input type=hidden name=isPass" )
    Response.Write( " value=" & Session("isPass") & " >")
    Response.Write("</form>")
    Response.Write("<script>t.submit();</script>")
    %>

    在ASP.net应用中用页面getSession.aspx来接受传递过来的Session变量值

    getSession.aspx.cs代码片段:
    private void Page_Load(object sender, System.EventArgs e)
      {
      
      if(!Page.IsPostBack)
      {
       string aspurl=ConfigurationSettings.AppSettings["aspURL"].Trim();      
       try
       {
        string fromurl=Request.ServerVariables["HTTP_REFERER"];
        
        //验证是否从asp应用中提交过来
        if(fromurl.StartsWith(aspurl))
        {
         string uid=Request["UID"].ToString();
         string state=Request["isPass"].ToString();
        
          if(uid!="" && state=="ok")
          {
           //表明用户在asp系统中已登录成功 
        
          }
     
        }
        else
        {
         Response.Write("<script>alert('非法用户或未登录用户');top.location.href='" + aspurl +

    "';</script>");
        
        }
        
       }
       catch
       {
        Response.Redirect(aspurl);
       }

      }
    }

    当然,上述例子只是为解决特定的问题,如果要写成通用的,则需要做如下修改
    就在autoPostForm.asp使用 

    For each sItem in Session.Contents 
    Response.Write("<input type=hidden name=" & sItem) 
    Response.Write( " value=" & Session.Contents(sitem) & " >") 
    next 

    而在getSession.aspx页面用下面的代码来接受并用同名Session变量保存 

    for(int i=0;i<Request.Form.Count;i++) 

    Session[Request.Form.GetKey(i)]=Request.Form[i].ToString(); 

  • 相关阅读:
    [转] STM32 FSMC学习笔记
    【转】嵌入式系统 Boot Loader 技术内幕
    mini2440 使用 JLink V8 直接烧写 Nor flash
    S3C6410移植uboot(一)
    2440的RTC时钟
    关闭2440 屏幕背光
    基于十级流水线的开立方根算法
    Visual Studio 2008配置SystemC开发环境
    Linux C 中字符串化操作符#
    linux 中 timeval结构体
  • 原文地址:https://www.cnblogs.com/top5/p/1794086.html
Copyright © 2011-2022 走看看