經常會有一些ASP.net程式需要往檔案系統裡面寫入或者讀取一些內容。如果程式訪問的路徑是原生檔案路徑(c:\docTemp)這樣的話還比較好配置,只要將doctemp的使用權限設定為允許ASP.net運行帳號(IIS6預設用"Network Service",IIS5的話預設是"ASPNET")可以讀寫就行。但是如果檔案是需要放置在UNC(網路路徑,如:“\\10.101.11.111\DocTemp”)路徑上的話,就麻煩了。因為Window2003的共用出來的檔案.ASP.net運行帳號是無法訪問到該網路路徑的。因為檔案伺服器上的Network service和應用伺服器的Network service的密碼是不一樣的(都是動態產生的)。不過還好還是有辦法解決的。
如果你的兩個伺服器都在同一個域裡面的話,就建一個域帳號,將這個帳號加入IIS_WPG。同時IIS建一個程式運行池用這個域帳號來運行你的ASP.net程式。檔案伺服器上的路徑也制定這個域帳號能夠共用和訪問這個共用路徑就行了。
但是如果你的兩個伺服器都不在同一個域的話,就在兩個伺服器上分別建相同的帳號(密碼也必須一樣)。將Web伺服器的帳號加入IIS_WPG,同時IIS建一個程式運行池用這個域帳號來運行你的ASP.net程式,檔案伺服器上就指定這個帳號有共用和存取權限就可以了。
但是今天同事告訴我這樣配置也沒法解決,而且情況很詭異。配置好了,在伺服器本機訪問網站,附件的上傳下載都沒問題。但是在其他客戶機上面訪問的話就報該UNC路徑沒法訪問的錯誤。
於是遠程上伺服器看配置,找了半天也沒發現問題所在,共用的寫入讀取許可權都配好了,硬碟的NTFS安全許可權也配好了。不過伺服器好像存在下面幾個問題
-
- 過在事件檢視器裡面發現一個來自於rxSMB的系統錯誤”重新導向程式無法確定連結類型“。
- 配置的NLB裡面心跳線的IP地址和公開地址是同網段,同掩碼的
估計是Windows沒法知道在訪問該UNC路徑的時候該走哪個網卡所致。後來讓同事把NLB去掉,重新設定其中一台伺服器問題解決了。後面估計還要跟蹤一下情況重新把NLB配置起來,看看是否還存在同樣的問題。