IIS虛擬目錄實現與文件服務器網絡驅動器映射共享

這篇文章轉載別人,想原創做者致敬!web

我本人也遇到一樣的問題,故轉載記錄。安全

本文重點描述如何使用IIS訪問共享資源來架設站點或執行 ASP.Net 等腳本。服務器

一般狀況下,擁有多臺服務器的朋友在使用IIS創建站點的時候,會遇到如何把多臺服務器的資源合併到一塊兒的問題。如何讓A服務器的站點,訪問B服務器內的資源(如:音樂、視頻等)。 
固然,咱們可使用 http 協議來實現。在B服務器內創建一個資源站點,而後A服務器的站點直接經過http方式請求B服務器內的資源站點來得到資源,有時候這樣作不是咱們想要的效果。 
設想,可否將B服務器的資源共享到A服務器中來,做爲A服務器站點中的一個虛擬目錄呢? 
Linux中,咱們可使用 NFS 很方便的達到這個目的,一樣,在IIS中也是一樣可行的,請見下文中的詳細描述。編輯器

準備工做 
1.共享資源服務器爲 ShareServer,IP地址爲:192.168.100.10; 
2.Web服務器爲 WebServer,IP地址爲:192.168.100.20ide

詳細步驟: 
1、共享帳戶的創建 
1.在 WebServer 上創建一個用戶名,方便使用該用戶讀取 ShareServer 上的共享目錄,爲了web文件能正常運行,同時又避免使用戶擁有太高的權限,咱們能夠直接把該用戶納入 Guests(win2003中) 組,或者 IIS_IUSRS(win2008中) 組內,這樣就一舉多得了。我這裏創建的用戶名爲 IIS_ShareUser ,密碼爲 123456; 
2.在 ShareServer 中也創建一個同名同密碼的用戶(必須一致,不然在UNC驗證的時候會沒法登錄)。這裏用戶名也應該爲 IIS_ShareUser ,密碼爲 123456,也納入Guests組中;工具

2、共享位置的創建 
1.ShareServer 中使用文件夾共享工具,共享出一個目錄,共享名爲 public ,共享權限設置爲 Administrators 組 讀取+寫入,IIS_ShareUser 用戶 讀取(若是須要存東西,就加上 寫入 權限); 
這裏 Administrators 用戶必須擁有 讀取+寫入 權限,不然在 WebServer 裏使用IIS直接設置的時候會提示沒法保存設置。 
共享位置的文件夾安全設置也必須加入 IIS_ShareUser 的 讀取運行 權限,另外還須要加入IIS進程用戶的 讀取運行 權限,這裏再也不描述運行IIS站點所須要的 文件夾安全 權限設置。網站

3、IIS中引用共享目錄 
1.WebServer 中IIS裏創建站點或虛擬目錄,路徑指向 \\192.168.100.10\public ,鏈接認證用戶手動輸入爲 IIS_ShareUser ,密碼 123456。 
當第1步完成的時候,您已經經過web方式訪問該站點或虛擬目錄中的來自 ShareServer 共享目錄的資源,可是 ASP.Net 尚未權限執行。 
2.ASP.Net的權限設置 
從站點根目錄下打開 web.config 文件,在 <system.web> 節點之內,加入如下內容: 
<identity impersonate="true" userName="IIS_ShareUser" password="123456" /> 
其實就是修改了 ASP.Net 執行的認證方式,把認證方式修改成 ASP.Net模擬用戶 ,這樣就能讓 ASP.Net 經過剛纔創建的共享帳號執行和訪問 ShareServer 中的資源了。加密

可是! 這還只是能夠訪問資源文件,對於aspx這樣的須要執行的文件來講,還會出現應用程序的信任級別問題,說信任已失效之類的錯誤.url

MS的網站上給出來解決方法,日誌

http://support.microsoft.com/default.aspx?id=320268

可能對於其餘人來講能夠執行成功, 由於在網上也看到不少人發了日誌出來. 但對於我來講, 怎麼也成功不了.

後來找了不少資料, 發現原來還差一個參數.

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\ computername \ sharename \ *"FullTrust -exclusive on 以上是MS站上給出的命令, 如下是個人(注意紅色的參數): c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -q -m -ag 1 -url "file:////\\ computername \ sharename \ *"FullTrust -exclusive on

注意內容:要想得到虛擬目錄的指向路徑在ASP.NET中要使用Server.MapPath()方法.

附註:
1.本文中的ASP.Net權限設置內容中,直接把用戶和密碼都寫入 web.config 文件內,這樣作安全性不是很好,可使用如下方法提升安全性:
從微軟下載工具 aspnet_setreg.exe (附送下載地址:http://download.microsoft.com/download/2/9/8/29829651-e0f0-412e-92d0-e79da46fd7a5/aspnet_setreg.exe) 下載後請解壓,這是一個壓縮包。在 WebServer 中使用 aspnet_setreg.exe 執行如下指令:aspnet_setreg.exe -k:SOFTWARE\AspNetIdentityAPP\identity -u:"IIS_ShareUser" -p:"123456"備註:這裏的AspNetIdentityAPP\identity 能夠根據你我的的愛好來設置,只要在讀取的地方對應就好了。成功執行後打開註冊表編輯器,打開目錄 HKLM\SOFTWARE\AspNetIdentityAPP\identity 會看到 userName 和 password 已經被系統加密了。咱們須要授予IIS進程用戶權限,以方便IIS用戶讀取這個加密後的配置,右鍵-->權限,加入 NetWork Service組(若是是WIN2003如下版本,IIS進程用戶應爲ASPNET) 讀取 權限。打開站點根目錄下的 web.config ,把 <identity impersonate="true" userName="IIS_ShareUser" password="123456" /> 替換爲<identity impersonate="true" userName="registry:HKLM\SOFTWARE\AspNetIdentityAPP\identity\ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\AspNetIdentityAPP\identity\ASPNET_SETREG,password" />保存退出便可,這樣就完成了整個過程,安全性也獲得了提高。

相關文章
相關標籤/搜索