Ошибка доступа к общей библиотеке DLL IIS 7.5 .NET запрещена - PullRequest
0 голосов
/ 31 мая 2018

Предисловие: у нас есть веб-серверы с балансировкой нагрузки и полноценное веб-приложение wcf api.В нашем веб-приложении у нас есть несколько ссылок, добавленных с помощью пакетов nuget или других проектов Visual Studio.На прошлой неделе я добавил новый проект (PLEGateway), который представляет собой слой данных в нашей системе, а также некоторые вызовы API в стороннюю систему.Код (bin) публикуется на файловом сервере и имеет соответствующие разрешения, чтобы веб-серверы могли его видеть.

После развертывания я столкнулся с ужасной Не удалось загрузить файл или сборку 'PLEGatewayCore, Версия = 1.0.0.6, Культура = нейтральная, PublicKeyToken = null' или одна из ее зависимостей.Доступ запрещен. ошибка.

Странно то, что, похоже, только периодически выдает эту ошибку.Это значит, что это сработает, вернитесь через некоторое время и попробуйте снова, и это не удастся.Подожди, вернись, и все будет работать внезапно.«некоторое время» определяется от 5 минут до ночи, так что я просто пытаюсь выполнить его через почтальона случайным образом.

Я просмотрел Google и другие SO вопросы по этой проблеме, и все они, похоже, указывали на проблемы с разрешениями.на временных папках asp.net.Я подтвердил, что права доступа настроены правильно.Пул приложений IS включен для 32-разрядных приложений.Все другие методы в веб-приложении работают, и только те, которые ссылаются на какие-либо функции в этой dll, вызывают ошибки.

Я наконец-то начал смотреть на Process Explorer для нашего файла W3wp.exe для этого пула приложений и когда я смотрю наНа вкладке сборок .NET один сервер загружает мою dll, а другой - нет, если смотреть на раздел общего доступа AppDomain.

В целом мой вопрос таков: почему один сервер загружает библиотеки DLL, а другой - нет, когда их конфигурация IIS также извлекается из того же расположения (общая конфигурация)?

1 Ответ

0 голосов
/ 31 мая 2018

У вас есть 2 веб-сервера A и B. Оба настроены для загрузки своих двоичных файлов в папку bin с общего файлового сервера.

Вы получаете сообщение об ошибке отказа в доступе, поскольку IIS блокирует эти файлы при загрузке.Это означает, что только один из веб-серверов успешно загружает свои двоичные файлы.

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

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

...