IIS的全稱是Internet Information Service,中文名稱是網絡信息服務。
在IIS中,應用程序與虛擬目錄特別容易混淆,但兩者又是完全不同的概念. 應用程序是一個邏輯邊界,這個邊界可以分隔網站及其組成部分。虛擬目錄則是一個真實的指針,這個指針指向了一個本地或遠程的物理路徑。虛擬目錄總是存在於應用程序之中,一個應用程序可以包括多個虛擬目錄。
1. 應用程序:
一般情況下,一個應用程序就是一個網站(但不是所有情況),而應用程序中如果再創建應用程序,那么它就是這個網站的子應用,比如我們常見的,前台用戶瀏覽功能與后台管理功能,這樣我們可以分成兩個子應用,不過我們也可以通過應用程序框架來實現此功能,而並不一定是依賴於IIS應用程序功能,IIS中應用程序的存在意義大概也就如此了吧。
2. 虛擬目錄:
虛擬目錄的存在意義,我們可以理解為分布式的一種實現手段。說到虛擬目錄,我們有必要引出物理路徑的概念。物理路徑是磁盤上實際存在的路徑,而虛擬目錄是物理路徑的指針,相當於快捷方式。有了虛擬目錄功能,我們就可以將網站的組成部分放在我們想放的任何地方,而不只局限於我們創建網站應用程序的磁盤。
如果沒有虛擬目錄,假如我們在D盤創建了個網站,那么這個網站所有的組成部分,比如圖片,程序代碼,模板文件,有的甚至有視頻文件,這些目錄和文件都只能在D盤的這個網站目錄下,這樣網站應用才可以運行。而有了虛擬目錄功能,我們可以用虛擬目錄指向其它盤符,或者是指向一個網絡路徑,這樣網站的組成部分就不局限於網站應用所在的磁盤,實現了文件分布式存儲,也突破了磁盤容量上限的瓶頸。
在IIS中,應用程序是可以選擇應用程序池的,這說明其是一個獨立的整體,雖然我們有時給應用創建子應用,但它並不依賴父應用,而是獨立的。而虛擬目錄是不可以選擇應用程序池的,這也說明了它是應用程序的組成部分。
具體實例需求
1、 圖片或文件在上傳時存放到一個容量較大的盤符下(和項目文件不一個盤符) 如E盤。然后在數據庫中依然存放相對路徑 如:/FileData/images/20210914/202109141820372828.jpg
2、 前端頁面依然可以展示圖片
在IIS上右鍵網站—> 添加虛擬目錄


項目發布目錄為:D:\YundiApp\ErpWeb
此時數據庫中某圖片存放數據如: /FileData/images/20210914/202109141820372828.jpg
實際就可訪問到E:\YundiApp\FileData\images\20210907\202109071100028235.jpg 下的圖片了
這樣我們以后上傳就都可以把文件存放到E盤去,然后不用修改數據,依然可以通過相對路徑訪問到圖片或文件。
如果是本地調試,也可以修改解決方案同級目錄下隱藏文件夾.vs 下 config->applicationhost.config 找打要調試的站點 添加虛擬目錄即可
<site name="WebPage" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="D:\WorkObject\WebPage" /> </application>
<!--添加虛擬目錄 E:\YundiApp\FileData --> <application path="/FileData" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="E:\YundiApp\FileData" /> </application>
<bindings> <binding protocol="http" bindingInformation="*:5215:localhost" /> </bindings> </site>
才疏學淺,相關文檔等僅供自我總結,如有相關問題可留言交流謝謝。
