当前位置:  编程技术>.net/c#/asp.net

实现Asp与Asp.Net共享Session的方法

    来源: 互联网  发布时间:2014-08-25

    本文导语:  在.net中,Session的存储机制已经与Asp的存储机制不一样,虽然可以在同一个IIS下同时运行asp与aspx,但是它们之间不能传递Session。 之前大批系统应用到了asp,在升级过程中,如果完全抛弃asp来重写,一来工作量太大,二来...


在.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 文件中,添加此项

并将其值修改为合适的数据库链接。
将另外两个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 2003SDKv1.1Bin 目录下
在命令提示符窗口中,执行 gacutil /i SessionUtility.dll,(如果执行失败,请将这两个文件的路径都写全了)

5、注册SessionUtility.dll为Com对象
同样,要找到 regasm.exe 文件,一般情况下在 WINNTMicrosoft.NETFrameworkv1.1.4322 目录下
在命令提示符窗口中,执行 regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb,(如果执行失败,请将这两个文件的路径都写全了)
这样就会产生出一个tlb文件,可当做普通的Com组件来调用。

6、注册SessionManager.dll
这个很简单了,在命令提示符窗口中,执行regsvr32 SessionManager.dll

7、如果是NTFS格式的系统,请找到 SessionMgr.dll,右键点击,属性,将IUSR_权限设置为可读和可执行。 至此,我们已经可以实现了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,就不能用了。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1621435




    
 
 

您可能感兴趣的文章:

  • 在ASP中可以轻易实现,不知道在JSP中能否实现?
  • Linux平台下哪种方法实现ASP好?
  • 求解!Java如何能在多个applet之间实现类似asp的session类!
  • 调试jsp的时如何实现像asp中的response.end的效果
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在jsp 中如何实现像asp 中的页面弹出式的菜单
  • asp.net 参数不同共用一个页面的实现方法
  • Asp.net防止重复提交的实现方法
  • 用linux做服务器运行ASP.net网站,请问具体怎样实现??
  • ASP.NET MVC3 实现全站重定向的简单方法
  • 在jsp中如何实现与asp中的Request.ServerVariables("SCRIPT_NAME")同等的功能?
  • Jsp中怎么实现类似ASP中split函数的功能?
  • 如何实现ASP中类似Global.asa的功能???
  • jsp中如何实现asp中的response.end,或php中的exit()功能?
  • java实现的asp服务器 OpenASP
  • ASP的功能在JSP中怎么实现呀?谢谢!!!
  • asp去掉html,保留img br p div的正则实现代码
  • asp.net 实现php的md5()函数功能
  • asp.net session实现用户登录的疑问
  • 怎样将Tomcat嵌入IIS中,实现用ASP与JSP都用IIS来做!
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • JSP的SESSION能存贮数组吗?我想实现“购物车”功能?
  • Session id实现通过Cookie来传输方法及代码参考
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • java Servlet实现Session创建存取以及url重写代码示例
  • 在JSP中如何实现用SESSION在多个页面之间传递变量!
  • ThinkPHP框架实现session跨域问题的解决方法
  • ThinkPHP实现将SESSION存入MYSQL的方法
  • 一个J2EE应用需要同客户端保持一个安全的(SSL/HTTPS)长连接,请问此部分的代码应该用什么J2EE component来实现,Session EJB or Servle
  • android实现session保持简要概述及实现
  • PHP实现利用MySQL保存session的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux 共享内存介绍及实现代码
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • linux下如实现与window下的驱动器实现文件共享??
  • linux与windows如何实现共享
  • 请教POSIX 和 System V 实现的内存共享的相同及不同之处
  • 急,请问linux可以实现跟win2K的网络共享吗?
  • Linux怎样实现单网卡共享上网????????????????
  • 如何实现Unix/linux服务器之间文件的相互共享?
  • 怎么实现INTERNET共享呢?
  • 如何实现linux和win2000下的资源共享?
  • 如何用RedHat 9.0自带的Apache在局域网内实现文件共享?
  • unbuntu下安装了VirtualBox装了个 XP的虚拟机,那么这两个系统之间怎么实现资源共享?
  • vm6.5.2安装vmtool 无法实现共享问题
  • 共享库如何在编译的时候确定哪些函数没有实现?
  • 怎么实现INTERNET共享呀?
  • TurboLinux 7.0 下实现与Windows 共享
  • 怎么在LINUX 9.0下实现网络文件共享
  • linux系统怎样设置才能实现组成局域网共享宽带啊!
  • 如何实现windows和linux两台机子的文件共享
  • linux下如何实现重新加载共享内存?
  • 如何实现异构系统之间的文件共享?急需!!!谢谢!!!
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3