asp:
Response.write(session("username"))
aspx:
Response.Write (Session["username"].ToString());

解决方案 »

  1.   

    嗯,如果不能直接得到,有什么方案呢~
    要求是最大限度的利用以前的asp,能不改最好~~~~~~~~~~~
      

  2.   

    把Asp项目所有文件添加到你的项目中,就是同一个Session了。如果要在两个项目,你可以把Session序列化保存在固定位置,然后两个项目来交互。
      

  3.   

    完全可以给你一些代码看看!
    asp部分
    function checkPerson(logname,pwd,logdate)
    dim dbcnn,dbrst,sql,connection
    if len(logname)=0 then 
    checkPerson=false
    exit function
    end if
    if len(logdate)=0 then 
    checkPerson=false
    exit function
    end if
    set dbcnn=GetDBCnn
    sql="[HR_TX].dbo.vb_user_login  '" & logname & "','" & pwd & "'"
    set dbrst=dbcnn.Execute(sql)
    if not dbrst.EOF then
    if trim(dbrst(0))="0" then 
    checkPerson=false
    else
    'if isnull(dbrst("iSysCode")) then
    ' iSysCode=""
    'else
    ' iSysCode=trim(dbrst("iSysCode"))
    'end if
    if isnull(dbrst("cpercode")) then
    cpercode=""
    else
    cpercode=trim(dbrst("cpercode"))
    end if
    if isnull(dbrst("cpername")) then
    cpername=""
    else
    cpername=trim(dbrst("cpername"))
    end if
    if isnull(dbrst("caccountid")) then
    caccountid=""
    else
    caccountid=trim(dbrst("caccountid"))
    end if
    if isnull(dbrst("cdepcode")) then
    cdepcode=""
    else
    cdepcode=trim(dbrst("cdepcode"))
    end if
    if isnull(dbrst("cdepname")) then
    cdepname=""
    else
    cdepname=trim(dbrst("cdepname"))
    end if
    if isnull(dbrst("cRole")) then
    RoleId=""
    else
    RoleId=trim(dbrst("cRole"))
    end if setvar "iSysCode",iSysCode '--职员编码
    setvar "userid",cpercode '--职员编码
    setvar "username",cpername '--职员姓名
    setvar "logname",caccountid '--帐    号
    setvar "RoleId",RoleId '--角色编码
    setvar "departmentid",cdepcode '--所属部门编码
    setvar "departmentname",cdepname'--所属部门名称
    setvar "logindate",date() '--登录日期
    setvar "correct",true '--登录校验通过标志
    setvar "remoteip",remoteip '--用户IP地址
    setvar "IsCustomer","NO" '
    checkPerson=true
    end if
    else
    Response.Write "数据库发生错误,请与系统管理员联系 !"
    checkPerson=false
    end if
    if dbrst.State=1 then dbrst.Close
    sql="select cViewCode from [HR_TX].dbo.b_Role_btn where cRoleCode='"&cpercode&"'"
    'response.write sql
    'response.end
    set dbrst=dbcnn.Execute(sql)
    do while not dbrst.eof
    setvar trim(dbrst(0)),1 '按钮权限
    dbrst.movenext
    loop
    if dbrst.State=1 then dbrst.Close
    set dbrst=nothing
    dbcnn.Close
    set dbcnn=nothing
    setvar "LoginFLag","Person"
    end function
    .net取出这些信息
    try
    {
    System.Text.Encoding enc = System.Text.Encoding.GetEncoding("gb2312");

    string ls_temp ="";//定一临时变量,用于保存没有经过解码的值 //如果没有正常登陆,导向到没有权限页面
    if  ( Request.Cookies["Session名字"]["Correct"]==null)
    this.Response.Redirect ("../../Publics/nologinalert.aspx"); userid=Request.Cookies["Session名字"]["userid"].ToString();  //当前登录人职员编码
    //Com.Ecode.Common.LogService.Write ("CurUserSysID" + CurUserSysID); if (userid==null)
    {
    this.Response.Redirect ("Publics/error.aspx?WrongInfo='没有对应的用户ID.'");
    Response.End();
    }
    ls_temp=Request.Cookies["Session名字"]["userid"].ToString().Trim();
                    userid=System.Web.HttpUtility.UrlDecode (ls_temp,enc);                 //对当前登录人帐号进行解码
    //Com.Ecode.Common.LogService.Write ("CurUserID" + CurUserID);


    ls_temp=Request.Cookies["Session名字"]["username"].ToString().Trim();
    username=System.Web.HttpUtility.UrlDecode (ls_temp,enc);              //对当前职员姓名进行解码
                    //Com.Ecode.Common.LogService.Write ("CurUserName" + CurUserName);


    ls_temp=Request.Cookies["Session名字"]["logname"].ToString().Trim();
    logname=System.Web.HttpUtility.UrlDecode (ls_temp,enc);               //对当前登陆帐号解码 ls_temp=Request.Cookies["Session名字"]["iSysCode"].ToString().Trim();
    iSysCode=System.Web.HttpUtility.UrlDecode (ls_temp,enc);               //对当前登陆帐号解码
    //Com.Ecode.Common.LogService.Write ("CurDepName" + CurDepName);


    ls_temp=Request.Cookies["Session名字"]["RoleId"].ToString().Trim();
    RoleId=System.Web.HttpUtility.UrlDecode (ls_temp,enc);                  //角色
    //Com.Ecode.Common.LogService.Write ("CurDepID" + CurDepID);

    ls_temp=Request.Cookies["Session名字"]["departmentid"].ToString().Trim();
    departmentid =System.Web.HttpUtility.UrlDecode (ls_temp,enc);               //部门代码 ls_temp=Request.Cookies["Session名字"]["departmentname"].ToString().Trim();
    departmentname =System.Web.HttpUtility.UrlDecode (ls_temp,enc);               //部门代码
    }
      

  4.   

    to  Richardhu(学无止境) :
    把Asp项目所有文件添加到你的项目中,就是同一个Session了。
    已经在同一个项目中
    asp:
    Response.write(session("username"))
    aspx:
    Response.Write (Session["username"].ToString());
    以上代码aspx不能得到session,请指教。如果要在两个项目,你可以把Session序列化保存在固定位置,然后两个项目来交互。
    这点正在看,谢谢。
      

  5.   

    to ggnjj(c#) :    setvar "iSysCode",iSysCode '--职员编码
        这个是自定义的函数嘛?找不到相关操作说明。。
      

  6.   

    http://www.webasp.net/article/12/11849.htm微软.net中,Session的存储机制已经与Asp的存储机制不一样,虽然可以在同一个IIS下同时运行asp与aspx,但是它们之间不能传递Session。 
    之前大批系统应用到了asp,在升级过程中,如果完全抛弃asp来重写,一来工作量太大,二来以前的成果不能保存下来。 所以微软提出了一个Session共享的解决方案,只是此文档光说明原理,并没有说具体的操作步骤,由此,我撰文描述过程。 简单说明原理,asp与asp.net之间的Session统一存储在数据库中来实现共享 1、创建数据表 
    打开SQL Server查询分析器,运行以下脚本来创建数据表,数据表名为SessionState 
    if exists (select * from sysobjects where id = object_id(N'[dbo].[SessionState]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
    drop table [dbo].[SessionState] 
    GO create TABLE [dbo].[SessionState] ( 
    [ID] uniqueidentifier NOT NULL , 
    [Data] [image] NOT NULL , 
    [Last_Accessed] [datetime] NOT NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
    GO alter TABLE [dbo].[SessionState] WITH NOCHECK ADD 
    CONSTRAINT [PK_SessionState] PRIMARY KEY NONCLUSTERED 

    [ID] 
    ) ON [PRIMARY] 
    GO 2、下载以下文件 Session.rar 将文件解压后,将产生4个文件,分别作如下操作。 
    复制 global.asa 到系统根目录下,并打开文件,修改Application("SessionDSN") 为合适的数据库链接字符串,如果系统本身已经有了global.asa,则在此文件中添加如下Application: 
    Application("SessionDSN") = "initial catalog=SqlServerName;persist security info=False;user id=sa;password=****;packet size=4096" 
    在系统的 Web.config 文件中,添加此项 
    <add key="SessionDSN" value="data source=SqlServerName;initial catalog=SessionDemoDb;persist security info=False;user id=SessionDemoDbUser;password=****;packet size=4096" /> 
    并将其值修改为合适的数据库链接。 
    将另外两个dll文件复制到系统目录下(或其他合适目录) 3、关闭IIS中Asp的Session选项 
    打开IIS,选择站点,依次选择属性 -> 主目录 -> 配置 -> 应用程序选项,将启用会话状况前的复选勾去除。如下图: 
    screen.width-350)this.width=screen.width-350" border=0> 4、安装SessionUtility.dll 
    首先找到 gacutil.exe 文件,一般情况下在 Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin 目录下 
    在命令提示符窗口中,执行 gacutil /i SessionUtility.dll,(如果执行失败,请将这两个文件的路径都写全了) 5、注册SessionUtility.dll为Com对象 
    同样,要找到 regasm.exe 文件,一般情况下在 WINNT\Microsoft.NET\Framework\v1.1.4322 目录下 
    在命令提示符窗口中,执行 regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb,(如果执行失败,请将这两个文件的路径都写全了) 
    这样就会产生出一个tlb文件,可当做普通的Com组件来调用。 6、注册SessionManager.dll 
    这个很简单了,在命令提示符窗口中,执行regsvr32 SessionManager.dll 7、如果是NTFS格式的系统,请找到 SessionMgr.dll,右键点击,属性,将IUSR_<machine_name>权限设置为可读和可执行。 至此,我们已经可以实现了Asp与Asp.net之间Session共享了,那么怎么去用 在Asp中,我们要如下使用: 
    页面开始端 
    Dim Session 
    Set Session = Server.createObject("SessionMgr.Session2") 
    Session("UserID") = ... 
    ... 
    ... 
    ... 
    页面结束端 
    Set Session = Nothing '记得一定要释放哦 而在Asp.net中,我们要如下使用: 
    首先,我们要添加对SessionUtility的引用 
    然后,编码时,原来是这样的继承 public class WebForm1 : System.Web.UI.Page,修改为public class WebForm1 : MSDN.SessionPage 
    这样在编码过程中就可以使用Session("UserID")这样的形式了。 注意:虽然Session实现了共享,但是Session的使用语法,相对于.net中新增的部分,就没有实现,毕竟要照顾asp 
    譬如Session.Remove,就不能用了。 
      

  7.   

    http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/HowtoShareSessionStateBetweenClassicASPandASP.NET.mspx如何在传统 ASP 和 ASP.NET 之间共享会话状态
      

  8.   

    http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/HowtoShareSessionStateBetweenClassicASPandASP.NET.mspx如何在传统 ASP 和 ASP.NET 之间共享会话状态
      

  9.   

    因为机制不同  所以无法共享   一般用表单post传递过去
      

  10.   

    是啊,两者机制不同,无法自动共享session