IIS虛擬目錄實現與檔案伺服器網路磁碟機映射共用

來源:互聯網
上載者:User

標籤:

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

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

本文重點描述如何使用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" />
儲存退出即可,這樣就完成了整個過程,安全性也得到了提升。

IIS虛擬目錄實現與檔案伺服器網路磁碟機映射共用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.