`
water84222
  • 浏览: 374281 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

如何实现Asp与Asp.Net共享Session

阅读更多
微软.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" />
并将其值修改为合适的数据库链接。
将另外两个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,就不能用了。

 
分享到:
评论

相关推荐

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

    在.NET框架中,Session的存储方式与ASP有差异,导致两者不能直接共享Session数据。 - **Session共享的必要性**:在对系统进行升级时,如果原系统使用ASP编写,而新的系统使用***,直接重写工作量巨大且原有成果...

    asp.net 用sqlserver 实现session共享 (100%成功)

    以下是一步步实现SQL Server共享Session的操作方法: 1. **配置SQL Server数据库**:首先,我们需要创建一个SQL Server数据库用于存储Session数据。这个数据库包含一个或多个表,每个表用于存储不同的Session键值对...

    .NET session共享

    1. **Session的基本原理**:Session是ASP.NET中的一个内置对象,用于存储用户会话期间的数据。它基于Cookie(默认情况下)来跟踪用户状态,通过唯一SessionID将用户请求与服务器上的特定Session数据关联起来。 2. *...

    asp和asp.net共享Session

    使用隐藏框架的方式实现Session共享.绝对的安全, login.asp页面为主页面, 不管是查看页面源文件还是url都不会泄密,很安全的.

    通过a Web Service实现ASP 网页to ASP.NET网页Session传递程序例子

    在这个例子中,我们探讨的主题是如何通过Web服务(Web Service)实现在ASP网页与ASP.NET网页之间传递Session数据。Session是Web应用程序中用来存储用户特定信息的一种机制,通常用于维持用户状态或在页面间传递数据...

    asp.net不同应用程序Session共享

    总结来说,实现ASP.NET不同应用程序间的Session共享需要对Session的工作机制有深入理解,并可能涉及修改`web.config`配置、创建自定义Session提供者或者调整IIS设置。在实施过程中,务必考虑性能、安全性和可扩展性...

    asp.net 跨子域共享SESSION

    在ASP.NET中实现跨子域共享SESSION,主要有以下几种方法: 1. **Cookie-Based Sharing**: 这是最常见的方法,通过设置Cookie的`Domain`属性来实现。将Session ID存储在Cookie中,并设置Cookie的域为父域,如`....

    在asp.net中使用session常见问题集锦

    #### ASP与ASP.NET之间是否共享Session? ASP和ASP.NET之间并不共享Session数据。如果需要在这两种技术间传递Session数据,可以通过将数据存储到数据库或其他共享存储机制来实现。 #### 为何使用`Response....

    Asp.net aspx share Session Variable

    3. **跨平台共享Session**:要实现ASP和ASP.NET间的Session共享,首先确保两者的Session状态管理方式相同。ASP默认使用InProc模式,数据存储在内存中;ASP.NET同样可以配置为InProc,但也可以配置为StateServer或SQL...

    跨站点共享Session解决方案,单点登录解决方案-ASP.NET 2.0版本

    在ASP.NET 2.0开发中,当需要在多个网站之间共享用户状态或者实现单点登录(Single Sign-On, SSO)时,面临的主要挑战是如何跨站点传递和管理Session信息。传统的解决方案包括使用数据库存储Session数据或利用...

    asp.net在线聊天室 vb版 实现私聊 在线成员显示

    4. **Session和Application状态管理**:在ASP.NET中,Session用于存储单个用户的数据,而Application则用于共享所有用户的信息。在线成员显示可能就是通过Application来跟踪当前在线的用户。 5. **私聊实现**:私聊...

    jsp和asp.net共享session值示例代码

    标题中提到的"jsp和asp.net共享session值示例代码"是一种跨平台共享Session数据的尝试。由于JSP是基于Java的,而ASP.NET是基于.NET Framework的,它们之间直接共享Session是不可能的,因为它们使用不同的Session管理...

    ASP.NET状态管理(Cookies,Session,ViewState,Application...)

    Session是ASP.NET提供的一种服务器端状态管理方式,用于存储与特定用户会话相关的信息。当用户访问网站时,ASP.NET会为该用户创建一个唯一的SessionID,并通过Cookie将其发送回浏览器。之后,每次请求时,浏览器都会...

    ASP.NET Session的七点认识

    ASP.NET Session是.NET Framework中用于管理用户会话状态的一种机制。它允许开发者在用户的浏览器会话期间存储和检索数据,从而实现跨页面的数据共享。以下是对ASP.NET Session的七点深入理解: 1. 值类型与引用...

    一个基于 ASP.Net的进行Session 处理的高级技巧程序例子代码

    ASP.NET中的Session是Web应用程序中用于存储用户特定信息的关键机制,它允许开发者在用户的不同页面请求之间保持数据。Session处理是构建动态、交互性强的网站的重要组成部分,尤其是在处理用户登录状态、购物车信息...

    android与asp.net服务端共享session的方法详解

    总结来说,Android与ASP.NET服务端共享Session的关键在于正确地获取、保存和携带Session ID。通过这种方式,即使在客户端和服务器之间切换,也能保持用户状态的一致性。然而,这种方法也有其局限性,如跨域问题、...

Global site tag (gtag.js) - Google Analytics