<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>权限设置为可读和可执行。 <br><br>至此,我们已经可以实现了Asp与Asp.net之间Session共享了,那么怎么去用 <br><br>在Asp中,我们要如下使用: <br>页面开始端 <br>Dim Session <br>Set Session = Server.createObject("SessionMgr.Session2") <br>Session("UserID") = ... <br>... <br>... <br>... <br>页面结束端 <br>Set Session = Nothing '记得一定要释放哦 <br><br>而在Asp.net中,我们要如下使用: <br>首先,我们要添加对SessionUtility的引用 <br>然后,编码时,原来是这样的继承 public class WebForm1 : System.Web.UI.Page,修改为public class WebForm1 : MSDN.SessionPage <br>这样在编码过程中就可以使用Session("UserID")这样的形式了。 <br><br>注意:虽然Session实现了共享,但是Session的使用语法,相对于.net中新增的部分,就没有实现,毕竟要照顾asp <br>譬如Session.Remove,就不能用了。<br><br><p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1621435</p> <br></machine_name>

如何实现Asp与Asp.Net共享Session的更多相关文章

  1. android如何与asp.net服务端共享session

    近期需要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需 ...

  2. Asp.NET 与 WebApi 共享Session

    首先新建一个.net framework 4.5.2的 web应用程序,选择WebApi基架,包括MVC与Webapi 1.在global.asax中启用Session 2.在HomeControll ...

  3. ASP与ASP.NET转换Session数据桥的应用

    背景: 现有公司的产品OA是采用ASP早先的技术开发,需要与目前最新的ASP.NET产品进行数据交互的应用.现有的ASP应用程序往往采用“ASP Sessions”,这是一种经典的ASP内置模式,即允 ...

  4. ASP.NET下跨应用共享Session和使用Redis进行Session托管简介

    在之前的博客中,我说到了Session的共享问题,其中说到了Web Farm和Web Garden两种情况下Session的处理.在ASP.NET提供的Session处理方法中,有以下四种模式: 1. ...

  5. ASP.NET二级域名站点共享Session状态

    我的前面一篇文章提到了如何在使用了ASP.NET form authentication的二级站点之间共享登陆状态, http://www.cnblogs.com/jzywh/archive/2007 ...

  6. asp.net 配置二级域名的共享session,并实现sso单点登录

    公司最近做了一个新网站.原先网站的网址是www.xxxx.com.新做的网站要部署到info.xxxx.com.这两个网站要实现单点登录.而新老网站本身机构的原因,对于登录状态的判断,说白了就是对于s ...

  7. asp.net 分布式探讨之Session共享问题

    ---恢复内容开始--- Session共享是分布式架构设计中的一大难点,尽管session共享的解决方案不少,但是.net 下的解决方案还是比较少,而且说明文档也很少. 之前尝试用memcached ...

  8. asp.net基于StateServer的二级域名共享session

    备注:亲自试验有效,如果网友有通过下面的教程未实现session共享的,欢迎留言说明你遇到的问题.必有回复. 最近为实现的二级域名共享session纠结好久.网上的很多实现的方法试了都不行,查了很久才 ...

  9. ASP.NET MVC 使用Redis共享Session

    储存模式 1.InProc模式 这是ASP.NET默认的Session管理模式,在应用进程内维护Session. 2.StateServer模式 这是在服务器装了.NET环境后自带的一个StateSe ...

  10. ASP.NET下跨应用共享Session和使用Redis进行Session托管

    在之前的博客中,我说到了Session的共享问题,其中说到了Web Farm和Web Garden两种情况下Session的处理.在ASP.NET提供的Session处理方法中,有以下四种模式: 1. ...

随机推荐

  1. Mysqldump参数大全(参数来源于mysql5.5.19源码)

    参数 参数说明 --all-databases  , -A 导出全部数据库. mysqldump  -uroot -p --all-databases --all-tablespaces  , -Y ...

  2. ant design pro (十四)advanced 使用 CLI 工具

    一.概述 原文地址:https://pro.ant.design/docs/cli-cn 为了更好以及高效的开发效率,我们提供了配套的 ant-design-pro-cli 工具. pro cli 提 ...

  3. vue mixin使用

    1.概述 将一些公用方法引入到不同的组件中. 2.引入方式 (1)全局引入 // 注册全局Mixin Vue.mixin({ methods: { $touch: function() { // 用以 ...

  4. ‘close’ was not declared in this scope

    ‘close’ was not declared in this scope ‘read’ was not declared in this scope ‘sysconf’ was not decla ...

  5. java 线程安全集合

    ConcurrentMap 线程安全的HashMap CopyOnWriteArrayList 读多写少的线程安全的ArrayList,性能比vector好. ConcurrentLinkedQueu ...

  6. 【Excle数据透视】多列分别分类计数

    需求 今天碰到一个很特殊的需求,如下(分别对每一列的值去重并统计个数): 预期结果 实现方法 推荐使用第三种方案,因为不用写公式,比较简单! 方法一:使用countif函数 在单元格J2输入公式COU ...

  7. ip段/数字,如192.168.0.1/24的意思是什么?(转)

    ip段/数字,如192.168.0.1/24的意思是什么? 踩踩 0作者:Admin 发表日期:2013-10-31 复制链接 收藏 首先来了解一下二进制的转换知识: 二进制数转换成十进制数 二进制的 ...

  8. 数据库如何创建视图create view

    数据库如何创建视图     创建视图的理想步骤: 一般来说,视图创建可以分为五步走: 第一步:先考虑select语句的编写.我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一步 ...

  9. 【微软100题】定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。

    package test; /** * 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef左旋转2位得到字符串cdefab. 请实现字符串左旋转的函数. * ...

  10. [显示属性]-自定义桌面里没有IE选项

    1楼 哈哈,我来告诉你原因,微软为了应对欧盟的反垄断调查,在 SP3 的“自定义桌面”里去掉了 Internet Explorer 选项. 如果桌面 IE 图标被误删除,但是又想恢复,而不是建立快捷方 ...