IIS站點/虛擬目錄中訪問共享目錄(UNC)以及建立後的應用程序的信任級別問題

UNC是 Universal Naming Convention 的簡稱,也叫通用命名規範、通用命名約定。
網絡(範指局域網)上資源的完整位置名稱。
格式爲 \\servername\sharename ,其中 servername 是服務器名,sharename 是共享資源的名稱。
目錄或文件的 UNC 名稱可以包括共享名稱下的目錄路徑,如:\\servername\sharename\directory\filename
亦可作爲 \\serverip\sharename 格式,其中 serverip 是服務器的IP地址,sharename 是共享資源的名稱。
同樣也可以包括共享名稱下的目錄路徑,如:\\serverip\sharename\directory\filename

本文重點描述如何使用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

搞了一晚上終於搞定了. 立即記下來. 呵呵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章