Почему я получаю System.IO.FileLoadException: не удается загрузить файл или сборку, примерно раз в неделю, на моем веб-сайте ASP.Net? - PullRequest
6 голосов
/ 30 июня 2010

У меня довольно простой внутренний веб-сайт ASP.Net, в котором возникают проблемы с загрузкой dll Microsoft.Practices.EnterpriseLibrary.Data примерно раз в неделю. Вот сообщение об исключении:

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 устраняет проблему.
  • У нас был один и тот же код, запущенный на одном веб-сервере без проблем. Затем мы переместили сайт на два новых веб-сервера с балансировкой нагрузки (с использованием липких сессий) (все три Windows Server 2003 R2 Standard Edition SP1). Теперь каждый из веб-серверов с балансировкой нагрузки выбрасывает это исключение примерно раз в неделю.
    • Единственное существенное различие, о котором я могу думать, это то, что я установил 4.0 .NET Framework на серверах с балансировкой нагрузки. , Сайт по-прежнему работает под ASP.NET 2.0, поэтому я не понимаю, как это может быть проблемой
  • Я настроил службу индексирования так, чтобы она не выполняла поиск в папке «Temporary ASP.NET Files», но это не помогло.
  • Мы используем dll Microsoft.Practices.EnterpriseLibrary.Data везде на нашем сайте. Почти каждая страница использует нашу логическую DLL, которая, в свою очередь, использует библиотеки EnterpriseLibrary.
  • Хотя ошибки возникали один раз, я даже смотрел, какие процессы блокировали dll в папке «Temporary ASP.NET Files», и она ничем не отличалась от блокировок на сервере, который работал нормально.
  • Как только ошибка начинается, она выдает ошибку каждый раз, пока не будет выполнен iisreset

Будем весьма благодарны за любые идеи, которые кто-либо может предложить. Дайте мне знать, если я что-то пропустил.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 30 июня 2010

Посмотрите на Просмотр журнала привязки сборки . Это может указать вам правильное направление.

Я быстро взглянул на другие ответы SO, и один человек предположил, что приложение могло быть разработано для подписанной версии DLL, но рабочая среда имеет доступ только к неподписанной версии. Похоже, ваше производство загружает неподписанную сборку (PublicKeyToken=null).

0 голосов
/ 23 августа 2016

Установите следующие пакеты nuget:

Install-Package log4net -Version 2.0.0 Install-Package linqtoexcel

Install-пакет System.Data.Sqlite.x86 -Version 1.0.88.0 Установить-Sackck ServiceStack -Version 3.9.71 Install-Package ServiceStack.OrmLite.Sqlite32 -Version 3.9.71

...