IIS - 虛擬目錄與應用程序的異同


在Windows 7 IIS7中,對服務器建立站點后,有二種添加子站點的方式

A. 虛擬目錄
B. 應用程序
 
簡單總結下二者之間的異同
A.虛擬目錄
    虛擬目錄是指在站點下建立一個虛擬子目錄,指定一個固定的物理路徑做為站點的應用路徑。
    1. 虛擬目錄與父級站點共用一個應用程序池
    例如:站點TestWeb(c:\Inetpub\wwwroot\ TestWeb)下建立了SubTestA(D:\SubTestA)的虛擬目錄
        若TestWeb為設定了Framework V2.0,則SubTestA也必須是Framework V2.0的應用程序,否則將給帶來Framework不匹配的各種錯誤。
    2. 虛擬目錄必須將可執行文件(dll等)放置在父級站點的bin目錄下。
    3. 虛擬目錄中的web.config文件繼承父級站點的web.config.
        就是說如果父級站點聲明過的引用,在虛擬目錄下的web.config中不應重復聲明
    4. 虛擬目錄中的應用其根目錄為父級站點的根目錄    
    5. 虛擬目錄中的AppSetting.config設置應使用相對路徑來進行引用。
B. 應用程序
    應用程序是指在父級目錄下建立了一個單獨的應用程序,獨享應用程序池
    1. 應用程序可以與父級站點擁有不同的應用程序池
        即可以達到TestWeb為Framework V2.0,而SubTestA可以是Framework V4.0,二者互不影響
    2. SubTestA的可執行文件獨立的放置在根目錄下的bin中,不能放置在WebTest的bin目錄中
    3. SubTestA的web.config獨立於WebTest的web.config
    4. SubTestA中的應用其根目錄為父級站點的根目錄
    5. 虛擬目錄中的AppSetting.config設置應使用相對路徑來進行引用。
 
應用程序是建立在虛擬目錄的基礎之上,而應用程序獨立於父級站點擁有獨立的程序運行機制,這讓同一站點擁有了運行不同框架集而不相互影響的能力
實際運用中需要根據不同的情況來選擇虛擬目錄或應用程序
 
追加疑問:
IIS下網站與網站下一個 虛擬目錄/應用程序 能否共享session?比如IIS下有test網站,test網站下有一個subtest 虛擬目錄/應用程序 是另一個ASP.NET項目的站點,主站點test和 虛擬目錄/應用程序 subtest  之間能否直接共享session?
答案:不能!因為每個虛擬目錄相當於是一個應用程序,而應用程序之間的Session是不共享的!只能通過cookies來共享主站點和 虛擬目錄/應用程序 之間的信息,當然也可以考慮一些變通方案
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM