說一下我想要實現的效果:
假如我做一個圖片展示類的網站,或者其他需要用戶上傳文件的網站,需要將用戶上傳的文件保存到一個Uploadfiles文件夾下,一般我們在做項目時用戶上傳的文件都是保存在網站項目的同目錄下,而考慮到隨着網站的逐漸運行,這個Uploadfiles文件肯定會越來越大。所以,考慮到這一點,我就想能不能實現將這個Uploadfiles文件夾放在其他的磁盤目錄下,比如網站項目放在服務器C盤下,而Uploadfiles文件夾放在D盤下。
開始考慮用虛擬目錄來實現,但是又擔心項目中在使用該目錄時會出現找不到目錄的問題。后來測試發現需要注意一個地方,就不會報錯了。
我的網站項目:

Default.aspx頁面用於向虛擬目錄中寫入數據;Web.aspx頁面用於讀取虛擬目錄中的數據。
搭建到IIS中的目錄結構:

Upload文件夾為我創建的虛擬目錄,引用的是其他磁盤下的一個文件夾。

通過高級設置中可以看到:

說明:
這里為了模擬向虛擬目錄中傳入數據,用向文本文檔中寫入數據來測試。
Default.aspx頁面中的代碼:
protected void Page_Load(object sender, EventArgs e) { string path = Server.MapPath("~/Upload/eds.txt"); using (StreamWriter sw=new StreamWriter(path,true)) { Random r = new Random(); sw.Write("我又加了一條 "+r.Next(0,100)+" <br/>"); } Response.Write("ok"); }
Web.aspx頁面中的代碼:
protected void Page_Load(object sender, EventArgs e) { string path = Server.MapPath("~/Upload/eds.txt"); using (StreamReader sr = new StreamReader(path, true)) { Response.Write(sr.ReadToEnd()); } }
運行,數據就會寫入到虛擬目錄中了,和真實目錄效果一樣。
我在幾次測試過程中出現了一次錯誤:

這種情況下,將應用程序池由集成模式改為經典模式就能運行了。

測試效果:
寫入數據:

顯示數據:

