国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

如何實現Asp與Asp.Net共享Session

2024-07-10 13:04:46
字體:
來源:轉載
供稿:網友

微軟.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,就不能用了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定襄县| 金塔县| 青川县| 宣汉县| 六枝特区| 福贡县| 云林县| 界首市| 陆河县| 大安市| 临颍县| 东莞市| 灵石县| 绵竹市| 随州市| 仙桃市| 磴口县| 新营市| 金阳县| 溧阳市| 汝城县| 闽清县| 伊川县| 喀什市| 耿马| 南平市| 江北区| 和政县| 韶关市| 华安县| 鸡东县| 固镇县| 通化县| 新民市| 准格尔旗| 寿阳县| 承德县| 甘孜| 葵青区| 东港市| 特克斯县|