IIS虚拟目录实现与文件服务器网络驱动器映射共享
這篇文章轉載別人,想原創作者致敬!
我本人也遇到同樣的問題,故轉載記錄。
本文重點描述如何使用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.20
詳細步驟:?
一、共享賬戶的建立?
1.在 WebServer 上建立一個用戶名,方便使用該用戶讀取 ShareServer 上的共享目錄,為了web文件能正常運行,同時又避免使用戶擁有過高的權限,我們可以直接把該用戶歸入 Guests(win2003中) 組,或者 IIS_IUSRS(win2008中) 組內,這樣就一舉多得了。我這里建立的用戶名為 IIS_ShareUser ,密碼為 123456;?
2.在 ShareServer 中也建立一個同名同密碼的用戶(必須一致,否則在UNC驗證的時候會無法登陸)。這里用戶名也應該為 IIS_ShareUser ,密碼為 123456,也歸入Guests組中;
二、共享位置的建立?
1.ShareServer 中使用文件夾共享工具,共享出一個目錄,共享名為 public ,共享權限設置為 Administrators 組 讀取+寫入,IIS_ShareUser 用戶 讀取(如果需要存東西,就加上 寫入 權限);?
這里 Administrators 用戶必須擁有 讀取+寫入 權限,否則在 WebServer 里使用IIS直接設置的時候會提示無法保存設置。?
共享位置的文件夾安全設置也必須加入 IIS_ShareUser 的 讀取運行 權限,另外還需要加入IIS進程用戶的 讀取運行 權限,這里不再描述運行IIS站點所需要的 文件夾安全 權限設置。
三、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這樣的需要執行的文件來說,還會出現應用程序的信任級別問題,說信任已失效之類的錯誤.
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" />
保存退出即可,這樣就完成了整個過程,安全性也得到了提升。
轉載于:https://www.cnblogs.com/wanghafan/p/5178979.html
總結
以上是生活随笔為你收集整理的IIS虚拟目录实现与文件服务器网络驱动器映射共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: J2EE的13个规范之(二) JDBC
- 下一篇: ZK tree使用mold