要实现ASP和***应用程序之间的Session共享,通常的方法是将Session数据存储在数据库中。下面将详细介绍整个过程和所需的知识点。
### ASP与***共享Session的方法
#### 1. 数据库设计与创建
需要在数据库中创建一个用于存储Session信息的表。以下是一个SQL脚本示例,用于创建一个名为`SessionState`的表:
```sql
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`的压缩包,并将其解压。解压后的文件包括`global.asa`和两个`dll`文件。需要将`global.asa`复制到系统的根目录下,并在文件中添加或修改数据库连接字符串:
```asax
Application("SessionDSN")="initialcatalog=SqlServerName;persistsecurityinfo=False;userid=sa;password=***;packet size=4096"
```
同时,在***项目的`Web.config`文件中添加相应的数据库连接字符串配置:
```xml
<add key="SessionDSN" value="datasource=SqlServerName;initialcatalog=SessionDemoDb;persistsecurityinfo=False;userid=SessionDemoDbUser;password=***;packetsize=4096" />
```
还需要将两个`dll`文件复制到系统目录或其他适当的位置。
#### 3. 配置IIS
接下来,需要在IIS中配置站点的属性。打开IIS管理器,选择站点,然后进入属性页面中的“主目录”配置,并在应用程序选项下取消选中“启用会话状态”。这一步是为了关闭ASP的Session功能,因为Session将由数据库管理。
#### 4. 安装并注册SessionUtility.dll
使用`gacutil.exe`工具来全局安装`SessionUtility.dll`。这个文件一般位于`*** 2003\SDK\v1.1\Bin`目录下。在命令提示符下运行:
```cmd
gacutil /i SessionUtility.dll
```
#### 5. 注册SessionUtility.dll为COM对象
接着使用`regasm.exe`工具将`SessionUtility.dll`注册为COM对象,以便它可以像普通COM组件一样被调用。`regasm.exe`一般位于`WINNT\***\Framework\v1.1.4322`目录下。在命令提示符下运行:
```cmd
regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb
```
#### 6. 注册SessionManager.dll(此步骤内容残缺,省略)
### 知识点总结
- **Session存储机制差异**:ASP和***的Session存储机制不同。在.NET框架中,Session的存储方式与ASP有差异,导致两者不能直接共享Session数据。
- **Session共享的必要性**:在对系统进行升级时,如果原系统使用ASP编写,而新的系统使用***,直接重写工作量巨大且原有成果无法保留,因此需要一种方式使得ASP和***能够共享Session。
- **数据库存储机制**:通过将Session信息存储在数据库中,可以实现ASP和***应用程序之间的Session共享。
- **数据库表结构**:用于存储Session数据的表结构包括一个唯一标识符`ID`、Session数据本身`Data`以及最后访问时间`Last_Accessed`。
- **配置文件修改**:需要修改`global.asa`文件和***的`Web.config`文件,以设置正确的数据库连接字符串。
- **IIS配置**:在IIS中关闭ASP的Session支持,以避免冲突。
- **COM组件注册**:通过`gacutil.exe`和`regasm.exe`工具分别安装并注册Session管理相关的DLL文件,使其能够作为COM组件在应用程序中使用。
以上步骤涉及的技术和知识点包括了.NET、ASP、IIS、数据库操作以及COM组件的注册和使用。这种实现方式可以保证ASP和***应用程序之间无缝的Session信息传递,帮助在系统升级过程中更好地保留现有功能和数据。