由於 ASP.NET 在運行的時候,是採用 ASPNET (IIS5) 或 NETWORK SERVICE (IIS6) 身份在執行的,因此並無權限將檔案讀取或寫入到網路芳鄰的 Share Folder 中。
因為透過 IIS 是可以讀的到檔案的,但是透過 ASP.NET 卻無法正確的取得檔案!使用 System.IO.File.ReadAllText(filename) 讀取檔案內容時,就會發生 Exception !甚至連 File.Exists(filename) 都無法檢查檔案是否存在!
這很有可能會讓 .Net 新手誤以為是 .Net 的 Bug !!
- 新增一個共用的使用者到「 File 主機」與「每一台WEB主機」,每台主機的帳號、密碼都要一樣
- 在 File 主機新增分享目錄
- 修改目錄權限 ( File 主機 )
- 修改目錄權限 ( 所有 WEB 主機 )
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
ImpersonateUser 可讀取、可寫入
- 確認 IIS 的虛擬目錄設定
- 修改網站的 web.config
在 <system.web> 底下新增 <identity> 設定,讓網站用 ImpersonateUser 的身份執行!
<identity impersonate="true" userName="ImpersonateUser" password="pwd" />
只要以上六個步驟就可以完成 Webfarm 的架構設定!