All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
防刷新重复提交、防后退方法_[Asp.Net教程]
用Php模拟asp.net的页面模型_php资料_编程技术
.net控件开发(十一)之.net设计期功能,第一部分_[Asp.Net教程]
两个小问题where 1=1 和 count(1) 与 count(-)_[SQL Server教程]
在.NET中利用委托实现窗体间通信_[Asp.Net教程]
用PHP程序实现支持页面后退的两种方法_[PHP教程]
探讨ASP.NET,2.0中的Web控件改进技术_[Asp.Net教程]
JS开发字典探测用户名或密码工具_JavaScript技术_编程技术
详细讲解动态网页制作技术PHP中的函数应用_[PHP教程]
C#中ComboBox控件应用实例
Reading number is top 10 pictures
新版武松打虎
A cat have life principles
Players in the eyes of a perfect love2
Absolutely shocked. National geographic 50 animal photographys8
Tie a large font of mouse
青春清纯美女大集合4
壮丽的云彩2
The real super beauty2
汪峰的梦想
Sell the barbecue as says father du breul4
Download software ranking
Sora aoi‘s film--Lust fan wall
网页特效实例大全
Unix video tutorial9
Unix video tutorial7
WebService在.NET中的实战应用教学视频 → 第2集
Boxer Classic video3
好色的外科大夫
Sora aoi 120 minutes
Call Of Duty5
Boxer vs Yellow3
delv published in(发表于) 2014/1/23 3:14:41 Edit(编辑)
如何实现Asp与Asp.Net共享Session_[Asp.Net教程]

如何实现Asp与Asp.Net共享Session_[Asp.Net教程]

如何实现Asp与Asp.Net共享Session_[Asp.Net教程]

在.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 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_权限设置为可读和可执行。


至此,我们已经可以实现了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,就不能用了。







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.