Не удалось загрузить файл или сборку или один из его зависимостей. Доступ запрещен. Проблема случайна, но после того, как это происходит один раз, она продолжается



Я нашел много информации об этой ошибке: 'ошибка: не удалось загрузить файл или сборки '*.dll ' или одна из его зависимостей. Доступ запрещен.’
Но я не нашел ответа, конкретного для моего сценария.
Мой сайт развертывается на 6 разных производственных серверах, только на одном сервере я столкнулся с этой проблемой. Проблема случайна, но после того, как это произойдет один раз, она продолжается до тех пор, пока сайт не будет перекомпилирован, сделав небольшую модификацию в интернете.конфигурационный файл(я знаю трюк, после модификации в сеть.config перекомпилирует веб-приложение) и сайт на этом сервере начнет работать.
Вчера выпуск был воспроизведен после месячного периода работы.
Мы не можем позволить себе этот вопрос на производстве.

Деталь вопроса:




ошибка сервера в приложении"/".
____________________________________
Не удалось загрузить файл или сборку MainCore'.DbImpl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ' или одна из его зависимостей. Доступ запрещен.
Описание: необработанное исключение при выполнении текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительных сведений об ошибке и где было задано в коде.



сведения об исключении: System.IO.FileLoadException: не удалось загрузить файл или сборку 'MainCore.DbImpl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ' или одна из его зависимостей. Доступ запрещен.



Ошибка Источник :
Необработанное исключение во время выполнения текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно определить, используя следующую трассировку стека исключений.



трассировка загрузки сборки: следующая информация может быть полезна для определения причины сборки ' MainCore.DbImpl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ' не удалось загрузить.



предупреждение: Регистрация привязки сборок выключена.
Чтобы включить ведение журнала ошибок привязки сборки, установите значение реестра [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) до 1.
Примечание:существует некоторое снижение производительности, связанное с регистрацией ошибок привязки сборки.
Чтобы отключить эту функцию, удалите значение реестра [HKLMSoftwareMicrosoftFusion!EnableLog].



Трассировка Стека:



[FileLoadException: не удалось загрузить файл или сборку ' MainCore.DbImpl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ' или одна из его зависимостей. Доступ запрещен.]
...DbImpl.Событие.TTCEventController.GetEventFields (Int32 eventId) +0
WebSuite.SportChannel.ModelImpl.TTCModelController.AddEventFieldList (xmlelement eventNode, ITTCEventController ctrl, Int32 eventId, PlayerType stupidType) in ...rootSportChannelModelImplTtcTTCModelController.cs: 171
...ModelImpl.TTCModelController.GetLatestFourTourSchedulesXml () in ...rootSportChannelModelImplTtcTTCModelController.cs: 283
...От Webroot.элемент управления UserControl.Хедлайнеры.В(Объект отправитель, EventArgs e) +491
Система.Сеть.Утиль.Каллихелпер.EventArgFunctionCaller (IntPtr fp, Object o, Object t, EventArgs e) +25
Система.Сеть.Утиль.CalliEventHandlerDelegateProxy.Обратный вызов (отправитель объекта, EventArgs e) +42
Система.EventHandler.Invoke(Object sender, EventArgs e) +0
Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.Управление.OnLoad (EventArgs e) +132
Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.Управление.LoadRecursive () +66
Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.Управление.LoadRecursive () +191
Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.Управление.LoadRecursive () +191
Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.Страница.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428
____________________________________



информация о версии: Microsoft .NET Framework версия: 2.0.50727.5446; ASP.NET версия: 2.0.50727.5420


1378   20  

20 ответов:

для моего сценария я обнаружил, что в интернете есть узел идентификации.конфигурационный файл.

<identity impersonate="true" userName="blah" password="blah">

когда я удалил параметры имени пользователя и пароля из узла, он начал работать.

другой вариант может заключаться в том, что вам нужно убедиться, что указанное имя пользователя имеет доступ к работе с этими "временными ASP.NET файлы" папки, найденные в различных C:\Windows\Microsoft.NET\Framework {версия} папки.

надеюсь, что это поможет кому-то еще!

была та же проблема, исправлена с установкой параметра "включить 32-разрядные приложения" до "правда" (в дополнительных настройках пула приложений iis).

мое решение заключается в следующем:

не нашел root под C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files.

Google сказал мне, что это может быть проблема с разрешением против текущего пользователя, тогда я обнаружил, что у меня есть текущая личность: IIS APPPOOL в неисправном сервере, где остальная часть сервера имеет текущий идентификатор:NT AUTHORITY\NETWORK SERVICE.

затем я изменил текущую идентичность с IIS APPPOOL to NT AUTHORITY\NETWORK SERVICE.

отсюда я обнаружил, что сброс веб-приложения перестраивается временный ASP.NET кэш, решение проблемы.

для всех, кто пробовал большинство решений и все еще имеет проблемы.

мое решение отличается от других, которое находится в нижней части этого сообщения, но прежде чем попробовать его, убедитесь, что вы исчерпали следующие списки. Конечно, я пробовал все из них, но безрезультатно.

  1. Перекомпилируйте и повторно разверните с нуля, не обновляйте существующее приложение. так Ответ

  2. предоставить IIS_IUSRS полный доступ к каталогу "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET файлы"

    имейте в виду версию платформы вы используете. Если ваше приложение использует олицетворение, используйте это удостоверение вместо IIS_IUSRS

  3. удалить все содержимое каталога "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET файлы".

    имейте в виду версию платформы вы используете

  4. измените идентификатор пула приложений, который использует ваше приложение, с ApplicatonPoolIdentity на NetworkService.

    в IIS > бассейны приложения > выберите приложение бассейн > дополнительные настройки > личности.

    так что ответ (пожалуйста, восстановить по умолчанию, если он не работает)

  5. проверить версию IIS и пул приложений .Чистой версии совместимость с ваше приложение. Очень применимо к развертываниям в первый раз. так что ответ

  6. Проверьте конфигурацию олицетворения, если это применимо. так что ответ

Мое Решение:

Я узнал, что некоторые антивирусные программы активно блокируют компиляции DLL в каталоге "временно ASP.NET файлы", мой был McAfee, ИТ-люди не смогли уведомить меня о установка.

согласно рекомендациям экспертов McAfee и Microsoft, вам необходимо исключить каталог "временно ASP.NET файлы" в сканирования в режиме реального времени.

источники:

Не отключайте антивирус, потому что он только делает свою работу. Не вручную скопируйте отсутствующие DLL файлы в каталог \ временно ASP.NET файлы{имя проекта} потому что это клейкой лентой.

Если вы все еще сталкиваетесь с проблемой попробуйте это:

Откройте Диспетчер IIS - > пулы приложений - > выберите пул приложений - > предварительная настройка - > В разделе "модель процесса" установите параметр "загрузить профиль пользователя" как True

enter image description here

Если вы используете олицетворение, не забудьте дать разрешения, в том числе написать и изменить разрешение на соответствующую учетную запись пользователя в следующей папке:

C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files

мне не хватало разрешения на изменение, поэтому просто добавление разрешений по умолчанию не работало для меня.

У меня была та же проблема, исправлена путем восстановления и повторного развертывания все зависимые Dll файлы

перейдите в IIS - > пул приложений - > предварительные настройки - > включить 32-разрядные приложения

проверьте настройки IIS. Я использую IIS 7.5 с 32 или 64-разрядной компиляцией в .NET framework. Если у вас есть приложение, которое использует 32-разрядный режим, убедитесь, что пул приложений может использовать 32-разрядную инструкцию. В противном случае ничего не работает, независимо от того, сколько вы установили безопасность или сильный знак DLL.

Я считаю, что я потратил как 1 день на исследование его и это то, что я вышел.

вам нужно добавить олицетворяющего пользователя в папку отладки вашего решения, поскольку фреймворк попытается получить доступ к DLL из этого местоположения и поместить его во временное Asp.Net папка.

Так что в основном выполните эти 2 шага

  1. дать разрешение на временное Asp.Net папка под C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files и убедитесь, что пользователь, которого вы добавляете здесь же вы использование во время олицетворения.

  2. добавьте олицетворяющего пользователя в папку отладки вашего решения Ваш путь решения .. \бин\ "отладка"

Это должно работать

в моем случае это было связано с функцией защиты доступа моего антивируса (McAfee). Очевидно, что это блокировало доступ к этому файлу, так как такая ошибка.

Я отключил его и решение убежал. Возможно, вы захотите проверить любое служебное приложение, которое может повлиять на доступ к некоторым файлам.

Я не использовал олицетворение в моем случае. Мое решение состояло в том, чтобы предоставить полный доступ к моему каталогу проекта для группы пользователей "IIS_IUSRS".

 Go to run  : ctrl + R
 Type : %temp%

удалить все файлы и папки

 Rebuild Project.
 done!

Я столкнулся с этой проблемой и оказалось, что пакет/сборка шифрования на Windows. Это произошло потому, что моя компания реализовала политику, требующую зашифровать папку "Мои Документы", и мои решения Visual Studio оказались в этом каталоге.

Я мог бы вручную войти в свойства файла / каталога в Проводнике Windows и отключить шифрование. Но в моем случае это было временное решение, так как сетевая политика в конечном итоге изменить его обратно. Я закончил тем, что переместил свое решение VS в другое незашифрованное место.

в моем случае я скопировал службу с одного сервера на другой без выполнения надлежащего развертывания из Visual Studio. Длинная история.

в любом случае, я установил все соответствующие разрешения NTFS и еще много чего, но он все еще не мог загрузить основную DLL для службы.

я исправил это, переименовав соответствующую службу.файл pdb на что-то другое.

например вот моя папка bin: \bin\ service.dll service.dll.config service.pdb Я переименовал сервис.pdb в zzservice.pdb, а затем услуга.dll загружается нормально.

Я получил эту ошибку, убегая от против. Оказалось, я открыл решение, не запустив Visual Studio в качестве администратора. Закрытие Visual studio и запуск его снова в качестве администратора, а затем перестройка решили это для меня.

надеюсь, что это кому-то поможет.

в моем случае я использовал простое олицетворение, и у пользователя олицетворения возникли проблемы с доступом к одной из сборок проекта. Мое решение:

  1. найдите сообщение о внутреннем исключении, чтобы определить проблемную сборку.
  2. изменить свойства безопасности файла сборки.

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

    b) дайте этой учетной записи пользователя полный доступ в файл сборки.

я настраиваю среду на новом сервере. Моя паутина.конфиг получил узел идентификации, как показано ниже.Когда я столкнулся с "не удалось загрузить файл или сборку или один из его зависимостей. Доступ запрещен. Проблема случайна, но после того, как это происходит один раз, он продолжает"

добавлен ccs\HJKWeb в качестве списка пользователей Моего нового сервера.

  <authentication mode="Windows" />
        <identity impersonate="true" password="******" userName="ccs\HJKWeb" />

Если вы не можете найти DLL вместо отказа в доступе, убедитесь, что у вас установлен соответствующий распространяемый VC++.

для меня работал следующий хак; Перейдите в IIS - > пулы приложений - > Дополнительные параметры -> модель процесса - > удостоверение Изменен со встроенной учетной записи (ApplicationPoolIdentity) на пользовательскую учетную запись (пользователь моего домена)

Comments

    Ничего не найдено.