Asp.net不像Asp一樣,建個文件夾就能放一個程序,互不干擾,為了讓一個虛擬主機能放多個Asp.net,查找了不少資料,沒有一個答案是完美的,不過有些資料倒給了我一些啓發,通過思考,加上實踐,終於探索出一個新路子,實現了能簡單提出為一個網站,也能合併的方案。同時感謝菜菜灰的幫助,請看實現的效果:

首先提一下要放在同一個虛擬主機的網站的要求:
1.Bin文件夾下的文件合併能保證各網站能調用到要用到的類。
2.App_Theme下的主題能合併,並且要互不影響。
3.文件中的鏈接必須是相對路徑。
4.Web.config要注意繼承關係。

第一點,因為我只有一個數據庫,所以表名都是有前綴的,就像.NET成員資格里的表都有aspnet的前綴一樣,將所有網站放在同一解決方案下,這就像三層結構是各個網站的並集。

第二點,App_Theme裏的主題在各個網站都用不同的名,如果一個網站有多個主題選擇,可以採用加前綴的方法,這樣才能使主題能合併而不出錯.

第三點,當然是重構現有網站啦,鏈接全改成相對路徑,母版頁和用户控件要注意,Css相對當前文件,而Js相對要使用的文件,客户端控件相對要使用的文件,服務器控件相對當前文件。最好開發的時候不使用IIS調拭,這樣可減少由於習慣問題而直接用相對根目錄路徑的機率.

第四點,根目錄必須有Web.config,注意不要與子目錄的衝突,生成後還要記得把子目錄裏的Web.config的authentication,profile,membership,roleManager四個節點去掉.

有了這個方法,只要開發的時候注意以上幾點,就能讓空間合理得利用了。