1

У меня есть веб-приложение, которое отлично работает какое-то время (несколько дней), а затем начинает бросать исключение FileLoadException при создании экземпляра класса, ссылающегося на внешнюю dll.Сборка FileLoadException (доступ запрещен) после периода времени

  • Я не загружаю сборку каким-либо статическим методом сборки. Я просто создаю экземпляр класса, который сам создает экземпляр класса из указанной библиотеки.
  • Я запустил Process Monitor и просто отслеживал путь приложения. Я получаю результаты «PATH NOT FOUND» для файла исходного кода, где произошла ошибка (скомпилирована в режиме отладки, поэтому я предполагаю, что это только часть .NET, пытающаяся показать строку, где произошла ошибка при сбросе трассировки стека)
  • Это работает на выделенном сервере в доме. Приложение запускается в пуле приложений .NET 3.5 вместе с другим веб-сайтом, созданным с использованием тех же ссылочных библиотек DLL. На другом веб-сайте гораздо больше трафика, но он никогда не получает эту ошибку.
  • Приложение сбалансировано по нагрузке на трех веб-серверах, и все эти проблемы возникают в какой-то момент.

Я включил регистрацию привязки сборки на одном из веб-серверов. Вот что трассировка стека выглядит следующим образом:

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.IO.FileLoadException: Could not load file or assembly 'Project.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied. 
File name: 'Project.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 
    at ... 
    at System.Web.UI.Control.OnLoad(EventArgs e) 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 
Running under executable c:\windows\system32\inetsrv\w3wp.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = Unknown 
LOG: DisplayName = Project.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
(Fully-specified) 
LOG: Appbase = file:///C:/websites/ProjectPath/ 
LOG: Initial PrivatePath = C:\websites\ProjectPath\bin 
Calling assembly : WebApp, Version=1.0.3723.37743, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\websites\ProjectPath\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/root/d77c161e/8751390/Project.Library.DLL. 
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/d77c161e/8751390/Project.Library/Project.Library.DLL. 
LOG: Attempting download of new URL file:///C:/websites/ProjectPath/bin/Project.Library.DLL. 
ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated. 

    --- End of inner exception stack trace --- 
    at System.Web.UI.Page.HandleError(Exception e) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest() 
    at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
    at System.Web.UI.Page.ProcessRequest(HttpContext context) 
    at ASP.myaccount_home_aspx.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Я не очень хорошо знаком с исключениями нагрузки отладки файл, так что любая помощь очень ценится (что еще я могу сделать для отладки и т.д.).

Спасибо.

ответ

2

Возможно, вы используете олицетворение в Web.config. Выключите его, если на самом деле не требуется олицетворение. В противном случае вам нужно будет сделать некоторые полезные трюки с разрешениями на папку C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET, чтобы позволить вашим выдавшим себя пользователям доступ к сборкам в этой папке.

0

У меня было то же исключение, когда я обновил сервис от фреймворка 2 до фреймворка 4 и активирован олицетворение. Исправлено обновление ссылки на службу clent.

+0

Что это значит, обновление обслуживания клиентов? У меня эта проблема, и я хочу олицетворения. Приложение, с которым я имею дело, - это службы отчетов SQL Server (не имеет простых конфигураций IIS, автономно, требует конфигурирования конфигурационных файлов). – Aaron