我有一個相當簡單的內部ASP.Net網站,每週大約加載一次Microsoft.Practices.EnterpriseLibrary.Data DLL。下面是異常消息:爲什麼我得到System.IO.FileLoadException:無法加載文件或程序集,大約每週一次在我的ASP.Net網站上?
注意System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied.
File name: 'Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null'
at foobar.Intranet.Logic.Data.UserDB.SelectByUserName(String userName)
at foobar.Intranet.Logic.Info.User.ValidateUser(String userName) in F:\Development\foobar\foobar\foobar.Intranet.Logic\Info\User.cs:line 130
at Login.ValidateUser(String username, String password) in e:\foobar\foobar.Intranet\Login.aspx.cs:line 32
=== Pre-bind state information ===
LOG: User = Unknown
LOG: DisplayName = Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///E:/foobar/foobar.Intranet/
LOG: Initial PrivatePath = E:\foobar\foobar.Intranet\bin Calling assembly : foobar.Intranet.Logic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: E:\foobar\foobar.Intranet\web.config
LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/foobar.intranet/668896d8/82d7e51c/Microsoft.Practices.EnterpriseLibrary.Data.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/foobar.intranet/668896d8/82d7e51c/Microsoft.Practices.EnterpriseLibrary.Data/Microsoft.Practices.EnterpriseLibrary.Data.DLL.
LOG: Attempting download of new URL file:///E:/foobar/foobar.Intranet/bin/Microsoft.Practices.EnterpriseLibrary.Data.DLL.
ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated.
事情:
- 一個簡單的IIS重置修復該問題。
- 我們在單個網絡服務器上運行相同的代碼,沒有任何問題。然後,我們將該網站移至兩個新的負載均衡(使用粘性會話)Web服務器(全部三個Windows Server 2003 R2標準版SP1)。現在,每個負載平衡的Web服務器每週都會引發一次這種異常情況,而這種情況只是出乎意料。
- 我能想到的唯一的主要區別是我在負載平衡的服務器上安裝了4.0 .NET框架。該網站仍然在ASP.NET 2.0下運行,所以我不知道這將是一個問題
- 我已經配置索引服務不搜索「Temporary ASP.NET Files」文件夾,但它didn沒有幫助。
- 我們使用我們網站上的Microsoft.Practices.EnterpriseLibrary.Data DLL。幾乎每一個頁面都使用我們的邏輯DLL,然後利用EnterpriseLibrary dll。
- 雖然發生過一次的錯誤,但我甚至想知道哪些進程鎖定了「Temporary ASP.NET Files」文件夾中的dll,並且它與服務器上工作正常的鎖沒有任何區別。
- 一次,直到一個IISRESET進行
任何有識之士任何人都可以提供將不勝感激錯誤啓動時,它錯誤每一次。讓我知道如果我錯過了什麼。
謝謝!
我假設一旦遇到此問題,那麼對程序集的任何調用都會失敗並顯示上述錯誤消息(直到出現iisreset被執行)。 – 2010-06-30 19:00:42
Tuzo - 你的假設是正確的。一旦問題開始,加載程序集的所有調用都會失敗(直到執行iisreset)。 – Daryl 2010-07-01 11:55:26
我剛剛發現的一個有趣的事情是IIS目錄安全性,匿名訪問用戶不是IUSR_MachineName,而是IUSR_OldMachineName。我已經更新了管理員用戶和組下的用戶名,但我必須手動更新IIS匿名用戶帳戶。有誰知道這是否會影響它? – Daryl 2010-07-01 16:58:55