完全可以给你一些代码看看! 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");
要求是最大限度的利用以前的asp,能不改最好~~~~~~~~~~~
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); //部门代码
}
把Asp项目所有文件添加到你的项目中,就是同一个Session了。
已经在同一个项目中
asp:
Response.write(session("username"))
aspx:
Response.Write (Session["username"].ToString());
以上代码aspx不能得到session,请指教。如果要在两个项目,你可以把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,就不能用了。