
架設部署網站因權限不足而出錯Could not load file or assembly
在架設部署網站的時候,常常會出現這樣那樣的錯誤,有一些錯誤是因權限不足而導致的。別看這些錯誤簡單不起眼,卻常常因隱蔽而難于發現。
就拿 IIS_W3C(IIS7 為 IIS_IUSRS) 無權訪問 bin 目錄下的 dll 文件來說。網站已經上傳到服務器,在架設過程中發現程序有錯誤,修改好后把有錯的 dll 文件上傳到服務器并復制到 bin 目錄下,此時由于上傳的 dll 文件 IIS_W3C 無權限訪問,所以就拋出錯誤。這個錯誤十分隱蔽,原本 bin 目錄下所有 dll 文件,IIS_W3C 都有訪問權限,誰又會想到重新上傳復制過去的 dll 文件會因權限不足而出錯。
一、IIS_W3C(IIS7 為 IIS_IUSRS) 無權訪問 bin 目錄下的 dll 文件會出現如下錯誤:
Exception: System.IO.FileLoadException
Message: Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 拒絕訪問。
拋出異常為文件載入異常,具體是不能載入 System.Web 或 System.Web 的依賴項。
有時還會同時出現下面一錯誤:
Failed to execute request because the App-Domain could not be created. Error: 0x80070005 拒絕訪問。
意思是:不能創建 App-Domain,所以執行請求失敗。
二、解決方法(架設部署網站因權限不足而出錯)
只要把 IIS_W3C(或 IIS_IUSRS)無權訪問的 dll 文件(通常是新上傳的 dll),分配給 IIS_W3C 讀取權限,問題就會獲得解決。
還有一種情況,當打開一個 html 頁或動態 aspx 頁時,提示無權限訪問,通常是匿名訪問網站的用戶(默認是以IUSR_開頭的用戶)沒有讀取這個頁的權限。