團隊開發中,如何處理一個(gè)站點不(bù)同Web應用通用Session - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 網站建設 >

團隊開發中,如何處理一個(gè)站點不(bù)同Web應用通用Session

發表時(shí)間:2004-3-10

發布人(rén):融晨科技

浏覽次數:47

團隊開發中,如何處理一個(gè)站點不(bù)同Web應用通用Session

前一段時(shí)間被同一個(gè)站點的(de)不(bù)同Web項目通用Session的(de)問題苦惱,在(zài)CSDN網友的(de)幫助下,找到(dào)了(le/liǎo)解決方法,網上(shàng)也(yě)找到(dào)了(le/liǎo)一些相關文章。不(bù)過這(zhè)些文章描述的(de)并不(bù)夠詳細,我把這(zhè)些相關知識整理一下,方便自己以(yǐ)後查找,也(yě)方便以(yǐ)後碰到(dào)這(zhè)樣問題的(de)人(rén),不(bù)要(yào / yāo)到(dào)處找資料,拼湊資料。

同一個(gè)站點,不(bù)同虛拟目錄下的(de)Web應用程序不(bù)能共享Session。而(ér)VS.net 默認創建的(de) Web 工程是(shì)一個(gè)工程一個(gè)虛拟目錄,一個(gè)工程使用一套自己的(de)Web.config和(hé / huò)Global.asax文件,這(zhè)樣我們在(zài)開發一個(gè)站點的(de)多個(gè)關聯項目(通過Session共享資源)的(de)時(shí)候,就(jiù)會遇到(dào)麻煩。

解決這(zhè)個(gè)問題并不(bù)難,把這(zhè)些工程合并到(dào)一個(gè)虛拟目錄下,至于(yú)Web.config和(hé / huò)Global.asax,雖然一個(gè)工程可以(yǐ)配置一個(gè),但是(shì)推薦還是(shì)整個(gè)web站點用一套配置,而(ér)且不(bù)同目錄下的(de)Web.config影響不(bù)同的(de)目錄下aspx的(de)配置,如果根目錄下和(hé / huò)一個(gè)WEB應用程序目錄下都有Web.config文件,而(ér)且都定義了(le/liǎo),sessionState mode="InProc" 顯然這(zhè)兩個(gè)應用的(de)Session不(bù)可能共享了(le/liǎo)。

具體來(lái)說(shuō),滿足以(yǐ)下條件,可以(yǐ)實現同一站點Session共享。

1、需要(yào / yāo)共享Session的(de)站點去處虛拟目錄設置,如下圖:

(圖一,删除應用程序的(de)虛拟目錄,注意是(shì)點擊删除按鈕,不(bù)是(shì)卸載按鈕,把自己的(de)應用程序目錄文件删除了(le/liǎo)我可不(bù)負責)

2、保證整個(gè)站點有個(gè)Web應用程序必備的(de)東西,比如Web.config和(hé / huò)Global.asax。 這(zhè)裏的(de)設置是(shì)要(yào / yāo)對整個(gè)站點負責的(de)。簡單的(de)方法可以(yǐ)在(zài)站點的(de)根目錄創建一個(gè)Web應用。

3、删除各個(gè)需要(yào / yāo)通用Session站點目錄下Web.config和(hé / huò)Global.asax文件中影響該應用程序的(de)設置,比如下面框中是(shì)羅裏的(de)Web.config中應該删除的(de)。

滿足以(yǐ)上(shàng)條件就(jiù)可以(yǐ)通用Session了(le/liǎo)。

下面針對對于(yú)團隊開發中,使用vs.net開發站點不(bù)同項目通用Session寫一個(gè)簡單演示:

前提條件:

有兩個(gè)Web 應用 WriteSession ,ReadSession 在(zài)同一個(gè)站點。我們要(yào / yāo)演示的(de)是(shì) WriteSession Web應用中寫一個(gè)Session值,比如Session["aaa"] = "123"; 然後在(zài)ReadSession中讀取出(chū)這(zhè)個(gè)Session值。

上(shàng)述兩個(gè)工程就(jiù)相當于(yú)大(dà)型Web開發中的(de)分配給兩個(gè)人(rén)的(de)開發工程。可以(yǐ)這(zhè)樣認爲(wéi / wèi),WriteSession 是(shì)處理用戶登錄,登錄後登錄信息記錄到(dào)Session 然後其他(tā)Web工程 比如羅列用戶信息在(zài)另外一個(gè)Web工程ReadSession

1、把兩個(gè)Web工程包含在(zài)同一個(gè)解決方案中,比如:WebTest;(這(zhè)個(gè)不(bù)用我圖片演示了(le/liǎo)把,新建一個(gè)空白解決方案,然後把存在(zài)的(de)兩個(gè)Web工程加入這(zhè)個(gè)解決方案)

2、新建一個(gè)Web工程,這(zhè)個(gè)工程是(shì)整個(gè)站點的(de)Web工程,不(bù)用包含這(zhè)個(gè)站點下的(de)幾個(gè)Web工程,如果從解決方案浏覽器下看如下圖:

(圖2 雖然 ReadSession WriterSession 下的(de)aspx文件也(yě)屬于(yú)ghj1976.csdn.net這(zhè)個(gè)Web工程的(de)一部分,但是(shì)它的(de)工程下并沒有羅列,這(zhè)樣實現了(le/liǎo)一個(gè)站點多個(gè)項目的(de)功能,在(zài)稍後的(de)配置中可以(yǐ)看到(dào),ReadSession WriterSession 都被解除了(le/liǎo)虛拟目錄。)

3、按照圖一提供的(de)方法,去除ReadSession 和(hé / huò) WriterSession 的(de)虛拟目錄配置。

4、ReadSession 和(hé / huò) WriteSession 兩個(gè)Web工程的(de)Web.Config文件中删除一些設置,删除那些看上(shàng)面提到(dào)的(de)框。(爲(wéi / wèi)了(le/liǎo)減少麻煩,最簡單的(de)方法是(shì)直接删除Web.Config和(hé / huò)Global.asax 兩個(gè)文件。這(zhè)樣以(yǐ)後程序啓動就(jiù)調用它上(shàng)級的(de)這(zhè)兩個(gè)配置文件,也(yě)就(jiù)是(shì)ghj1976.csdn.net這(zhè)個(gè)web應用的(de)這(zhè)兩個(gè)文件)

5、在(zài)ghj1976.csdn.net web工程中增加對 ReadSession WriteSession 兩個(gè)Web工程的(de)引用,注意:是(shì)工程引用,不(bù)是(shì)其他(tā)引用 看下圖

(圖3 這(zhè)三個(gè)Web工程是(shì)在(zài)同一個(gè)解決方案裏面,這(zhè)樣才可以(yǐ)實現 工程引用)

圖2也(yě)可以(yǐ)看到(dào)把這(zhè)兩個(gè)工程引用到(dào)ghj1976.csdn.net工程了(le/liǎo)。

6、生成解決方案,運行程序就(jiù)看可看到(dào),一切ok了(le/liǎo)。

如果要(yào / yāo)發布這(zhè)個(gè)程序,執行文件隻需要(yào / yāo)copy 根目錄下bin目錄下的(de)文件就(jiù)可以(yǐ)了(le/liǎo)。

其他(tā)要(yào / yāo)注意事項:

新建一個(gè)解決方案,這(zhè)個(gè)解決方案隻包含其中一個(gè)Web工程比如:ReadSession ,修改代碼,生成解決方案,你會發現執行咋會不(bù)是(shì)自己修改後的(de)呢。哈哈,當然不(bù)會一樣了(le/liǎo),這(zhè)個(gè)工程已經不(bù)是(shì)虛拟目錄了(le/liǎo),他(tā)調用的(de)執行文件是(shì)根目錄下bin目錄的(de)文件,而(ér)不(bù)是(shì)這(zhè)個(gè)解決方案目錄下bin目錄下的(de)。

團隊開發中,WriteSession 可以(yǐ)看作每個(gè)人(rén)都要(yào / yāo)調用的(de)公共工程,ReadSession 可以(yǐ)認爲(wéi / wèi)是(shì)每個(gè)人(rén)自己負責的(de)工程,這(zhè)樣就(jiù)可以(yǐ)實現團隊開發中的(de)多個(gè)工程共享一個(gè)Session了(le/liǎo)。

如何團隊開發網上(shàng)這(zhè)方面的(de)文章很多,這(zhè)裏就(jiù)不(bù)重複了(le/liǎo)。

相關資料連結:

CSDN 讨論這(zhè)個(gè)問題的(de)帖子(zǐ)在(zài):

http://expert.csdn.net/Expert/topic/1773/1773115.xml

307467 HOW TO: Create an ASP.NET Application from Multiple Projects for Team

http://support.microsoft.com/?id=307467

How to Share Session/Application State Across Different ASP.NET Web Applications

http://www.asp101.com/articles/jayram/sharestate/default.asp

317786 HOW TO: Manage Multi-Project Solutions in Visual Studio .NET

http://support.microsoft.com/?id=317786

相關案例查看更多