实现Asp与Asp.Net共享Session的方法 程序员文章站 2024-02-24 17:30:10 <iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe> 在.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"></add> 并将其值修改为合适的数据库链接。 将另外两个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中,我们要如下使用: <br>页面开始端 <br>dim session <br>set session = server.createobject("sessionmgr.session2") <br>session("userid") = ... <br>... <br>... <br>... <br>页面结束端 <br>set session = nothing '记得一定要释放哦 而在asp.net中,我们要如下使用: <br>首先,我们要添加对sessionutility的引用 <br>然后,编码时,原来是这样的继承 public class webform1 : system.web.ui.page,修改为public class webform1 : msdn.sessionpage <br>这样在编码过程中就可以使用session("userid")这样的形式了。 注意:虽然session实现了共享,但是session的使用语法,相对于.net中新增的部分,就没有实现,毕竟要照顾asp <br>譬如session.remove,就不能用了。<p id="tbpingurl">trackback: http://tb.blog.csdn.net/trackback.aspx?postid=1621435</p> <br></machine_name> 上一篇: Java中终止线程的方法详解 下一篇: C#调用windows api关机(关机api)示例代码分享 推荐阅读 实现Asp与Asp.Net共享Session的方法 asp.net利用后台实现直接生成html分页的方法 asp.net中Timer无刷新定时器的实现方法 asp.net后台动态添加JS文件和css文件的引用实现方法 asp.net中IDataParameter调用存储过程的实现方法 asp.net中C#获取字符串中汉字的个数的具体实现方法 ASP.NET实现将word文档转换成pdf的方法 学习Spring-Session+Redis实现session共享的方法 asp.net实现word文档在线预览功能的方法 ASP.NET实现根据IP获取省市地址的方法