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

2020-12-15 站長之家
首頁

 > 

語言

 > 

關鍵詞

 > 

最新資訊

 > 

正文

如何實現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.Net安裝簡明手冊
    MDAC2.6Beta22、軟體下載=====================·MDAC2.7(5.03MB)https://www.microsoft.com/data/download_270RTM.htm·FullSDKDownload(131MB)https://download.microsoft.com/download/.netframesdk
  • 請求如何進入ASP.NET MVC框架
    熟悉asp.net的朋友都知道,asp.net請求實際都是交給HttpHandler處理(實現了IHttpHandler的類型)。無論是.aspx,.ashx,.asmx 還是MVC裡的Action,請求都會交給HttpHandler。具體是在管道事件中,會根據請求創建一個HttpHandler,並執行它的PR方法。
  • ASP.NET學習篇(3)——幾個簡單的ASP.ENT的例子
    *一個資料庫的應用——如何利用CONFIG.WEB中設置的DNS連接資料庫,資料庫操作對象的一些基本用法。*EMAIL發送——在 引入一個系統類庫後(用IMPORT 標識符 ),利用msgMail對象,可以很方便的操作郵件發送過程。
  • asp.net+jquery.form實現圖片異步上傳的方法(附jquery.form.js下載)
    這篇文章主要介紹了asp.net+jquery.form實現圖片異步上傳的方法,結合實例形式分析了jquery.form.js前臺異步提交圖片與
  • asp.net連接MySQL,在GridView上實現增刪改查:前臺配置參數實現
    asp.net中如果想要在GridView控制項上實現增刪改查,通過給GridView添加數據源就可以實現,前提是使用的資料庫必須是數據源中有的。在SqlDataSource控制項中添加數據源最方便的是使用SQLServer、Access資料庫,但是有很多項目也會用到mysql資料庫,但是SqlDataSource中沒有提供mysql資料庫的連接,所以如果想要在GridView中通過配置來實現增刪改查mysql資料庫,是比SQLserver資料庫複雜。
  • Asp定時執行操作、Asp定時讀取資料庫(網頁定時操作詳解)
    如果用setTimeout實現setInerval的功能,就需要在執行的程序中再定時調用自己才行。>比如要定時打開頁面 Test.asp(當然Test.asp可以是讀取資料庫,生成靜態頁面......)
  • ASP.NET:session的來龍去脈解析
    這個東西嘛,我想每個Asp.net開發人員都知道它,尤其是初學Asp.net時,肯定也用過它,因為用它保存會話數據確實非常簡單。本文將對session的來龍去脈做一個介紹。  當我們新建一個網站時,VS20XX 生成的網站模板代碼中,Session就是打開。是的,如果你沒有關閉它,Session其實是一直在工作著。
  • ASP.NET Core - Razor頁面之Handlers處理方法
    但是,如果您同時實現兩種OnPostAsync和OnPOST等處理方法,您會遇到這樣的問題:自定義處理方法名稱除了默認的處理方法名稱,我們還可以指定自定義名稱。在 .cshtml 文件中的實現以下代碼:    <form method="POST">        <div>Description: <input asp-for="Category.Description" /></div>        <input type="submit" value="Save
  • asp.net core 5.0 中的 JsonConsole
    asp.net core 5.0 中的 JsonConsoleIntroasp.net core 5.0 中日誌新增了 JsonConsole,還是輸出日誌到 Console,但是會應用 Json 格式的一個 Formatter 把日誌格式化成 json 再輸出到控制臺
  • asp.net中級教程-40
    :GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="DriverName" HeaderText="分區名稱"/> <asp
  • ASP.NET Core MVC四種枚舉綁定方式
    所以到此我們研究結束,此方法應該是被.net core mvc團隊已經棄用,我們繼續往下看。這才是我們最終想要的,我們完全不需要藉助強類型視圖來實現,有專門針對枚舉的方法,簡單粗暴,但是要記住千萬別再select上加上 asp-for="" 選項,否則會出現如下錯誤,這個沒在研究了,估計和強類型視圖綁定有關
  • 在ASP.NET中使用SQL的IN操作
    在這篇文章中,我們能看到這樣一個UDF如何派得上用場。我們將建立一個web表單,在此用戶可以通過選擇checkbox控制項而選擇一些在DataGrid中的記錄。對這些被檢查的記錄的明細將會出現在表單中的另一個DataGrid中。這個表單像來如圖所示。在下面顯示了我們用來建立表單的ASPX。注意:如何使用TemplateColumn和Checkbox控制項增加DataGrid列。
  • ASP初學者學習ASP指令
    首頁 > 語言 > 關鍵詞 > asp最新資訊 > 正文 ASP初學者學習ASP指令
  • 簡明 ASP.NET Core 手冊
    你將從零開始,完整地構建一個 待辦事項(to-do) 應用,同時了解以下內容:MVC (Model-View-Controller) 模式的基本內容前端代碼(HTML, CSS, JavaScript)怎樣與後端代碼交互什麼是依賴注入以及它的實用之處如何進行資料庫的讀寫操作如何添加 登錄、註冊功能,以及如何提升安全性
  • NET開發-ASP.NET WebForm應用程式中,使用C#操作TextBox的屬性
    ID屬性ID屬性是每個asp.net每個伺服器控制項必須具備的屬性,用來指定控制項的唯一ID值。TextBox控制項的ID值最好以「txt+有意義的單詞」組成,便於後臺C#代碼中識別並賦值和獲取值。1.2.2. Text屬性TextBox控制項的Text屬性用於給文本框賦值或取值,以及獲取用戶輸入的值。
  • ASP.Net Core Razor 頁面路由
    在伺服器端 Web 應用程式框架中,其中非常重要的設計是開發人員如何將URL與伺服器上的資源進行匹配,以便正確的處理請求。
  • 目前中國網站服務端開發主要有PHP、asp.net、Java三種語言
    通過各招聘網站招聘程式設計師的類型統計得出結果是目前中國網站服務端開發主要有PHP、asp.net、Java三種語言,其他佔少數有潛力有C#,C++等,而Python也開始被開發者使用在服務端開發。從招聘的數據信息顯示,PHP編程開發主要集中在中小網站,個人站點,個人博客等開發,而政府網站更喜歡asp.net開發,Java則主要在電商,支付系統,安全數據的等方面有優勢。
  • Session是怎麼實現的?存儲在哪裡?
    為什麼有session如何實現session的共享SESSION 的數據保存在哪裡呢PHP中的session存儲Java中的session存儲前言  文章內容轉載或摘錄自,如下文章。阿里面試題————-session是怎麼實現的?存儲在哪裡?(http://blog.csdn.net/agfagafsdfas/article/details/22531331)SESSION 的數據保存在哪裡呢?
  • ASP.NET中使用IFRAME建立類Modal窗口
    ASP.NET中使用IFRAME建立類Modal窗口 我們經常要在程序的人機互動中用到模態窗口,但在B/S開發中,這一切變得不容易了,雖然也可以用window.showModalDialog函數實現
  • 自學MVC看這裡——全網最全ASP.NET MVC 教程匯總
    為ASP.NET MVC擴展異步Action功能(上)為ASP.NET MVC擴展異步Action功能(下)其他高級功能使用Model Binder綁定Action參數欄位時的取捨問題在ASP.NET MVC中使用IIS級別的URL Rewrite英文學習資源