團隊開發中(zhōng),如(rú)何處理一個(gè)站(zhàn)點不同Web應用通(tōng)用Session - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

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

知識

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

您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >

團隊開發中(zhōng),如(rú)何處理一個(gè)站(zhàn)點不同Web應用通(tōng)用Session

發表時間:2004-3-10

發布人:葵宇科技

浏覽次數:28

團隊開發中(zhōng),如(rú)何處理一個(gè)站(zhàn)點不同Web應用通(tōng)用Session

前一段時間被同一個(gè)站(zhàn)點的不同Web項目通(tōng)用Session的問(wèn)題苦惱,在CSDN網友的幫助下(xià),找到了解決方法,網上也找到了一些相關(guān)文(wén)章。不過這些文(wén)章描述的并不夠詳細,我把這些相關(guān)知識整理一下(xià),方便自己以後查找,也方便以後碰到這樣問(wèn)題的人,不要到處找資(zī)料,拼湊資(zī)料。

同一個(gè)站(zhàn)點,不同虛拟目錄下(xià)的Web應用程序不能共享Session。而VS.net 默認創建的 Web 工程是一個(gè)工程一個(gè)虛拟目錄,一個(gè)工程使用一套自己的Web.config和(hé)Global.asax文(wén)件,這樣我們在開發一個(gè)站(zhàn)點的多個(gè)關(guān)聯項目(通(tōng)過Session共享資(zī)源)的時候,就會遇到麻煩。

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

具體來說,滿足以下(xià)條件,可(kě)以實現同一站(zhàn)點Session共享。

1、需要共享Session的站(zhàn)點去處虛拟目錄設置,如(rú)下(xià)圖:

(圖一,删除應用程序的虛拟目錄,注意是點擊删除按鈕,不是卸載按鈕,把自己的應用程序目錄文(wén)件删除了我可(kě)不負責)

2、保證整個(gè)站(zhàn)點有個(gè)Web應用程序必備的東西,比如(rú)Web.config和(hé)Global.asax。 這裡的設置是要對整個(gè)站(zhàn)點負責的。簡單的方法可(kě)以在站(zhàn)點的根目錄創建一個(gè)Web應用。

3、删除各個(gè)需要通(tōng)用Session站(zhàn)點目錄下(xià)Web.config和(hé)Global.asax文(wén)件中(zhōng)影響該應用程序的設置,比如(rú)下(xià)面框中(zhōng)是羅裡的Web.config中(zhōng)應該删除的。

滿足以上條件就可(kě)以通(tōng)用Session了。

下(xià)面針對對于團隊開發中(zhōng),使用vs.net開發站(zhàn)點不同項目通(tōng)用Session寫一個(gè)簡單演示:

前提條件:

有兩個(gè)Web 應用 WriteSession ,ReadSession 在同一個(gè)站(zhàn)點。我們要演示的是 WriteSession Web應用中(zhōng)寫一個(gè)Session值,比如(rú)Session["aaa"] = "123"; 然後在ReadSession中(zhōng)讀取出這個(gè)Session值。

上述兩個(gè)工程就相當于大型Web開發中(zhōng)的分配給兩個(gè)人的開發工程。可(kě)以這樣認為,WriteSession 是處理用戶登錄,登錄後登錄信息記錄到Session 然後其他Web工程 比如(rú)羅列用戶信息在另外一個(gè)Web工程ReadSession

1、把兩個(gè)Web工程包含在同一個(gè)解決方案中(zhōng),比如(rú):WebTest;(這個(gè)不用我圖片演示了把,新建一個(gè)空白解決方案,然後把存在的兩個(gè)Web工程加入這個(gè)解決方案)

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

(圖2 雖然 ReadSession WriterSession 下(xià)的aspx文(wén)件也屬于ghj1976.csdn.net這個(gè)Web工程的一部分,但是它的工程下(xià)并沒有羅列,這樣實現了一個(gè)站(zhàn)點多個(gè)項目的功能,在稍後的配置中(zhōng)可(kě)以看到,ReadSession WriterSession 都被解除了虛拟目錄。)

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

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

5、在ghj1976.csdn.net web工程中(zhōng)增加對 ReadSession WriteSession 兩個(gè)Web工程的引用,注意:是工程引用,不是其他引用 看下(xià)圖

(圖3 這三個(gè)Web工程是在同一個(gè)解決方案裡面,這樣才可(kě)以實現 工程引用)

圖2也可(kě)以看到把這兩個(gè)工程引用到ghj1976.csdn.net工程了。

6、生成解決方案,運行程序就看可(kě)看到,一切ok了。

如(rú)果要發布這個(gè)程序,執行文(wén)件隻需要copy 根目錄下(xià)bin目錄下(xià)的文(wén)件就可(kě)以了。

其他要注意事項:

新建一個(gè)解決方案,這個(gè)解決方案隻包含其中(zhōng)一個(gè)Web工程比如(rú):ReadSession ,修改代碼,生成解決方案,你(nǐ)會發現執行咋會不是自己修改後的呢(ne)。哈哈,當然不會一樣了,這個(gè)工程已經不是虛拟目錄了,他調用的執行文(wén)件是根目錄下(xià)bin目錄的文(wén)件,而不是這個(gè)解決方案目錄下(xià)bin目錄下(xià)的。

團隊開發中(zhōng),WriteSession 可(kě)以看作每個(gè)人都要調用的公共工程,ReadSession 可(kě)以認為是每個(gè)人自己負責的工程,這樣就可(kě)以實現團隊開發中(zhōng)的多個(gè)工程共享一個(gè)Session了。

如(rú)何團隊開發網上這方面的文(wén)章很多,這裡就不重複了。

相關(guān)資(zī)料連結:

CSDN 讨論這個(gè)問(wèn)題的帖子(zǐ)在:

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

相關(guān)案例查看更多