У нас есть несколько веб-служб ASMX, размещенных на двух идентичных компьютерах с Windows Server 2003. Виртуальный каталог для веб-служб загружается в общий ресурс DFS, оба сервера указывают на один общий ресурс. У нас есть балансировщик нагрузки между Интернетом и двумя веб-серверами.
С кажущимся случайным интервалом (сейчас примерно два раза в неделю), когда пользователь пытается получить доступ к методу в веб-службе, IIS возвращает ошибку: «Не удалось загрузить файл или сборку» для одной из сборок, используемых в вызове метода, и будет продолжать сообщать об этом каждый раз при вызове метода, пока пул приложений не будет перезапущен.
Мы не обнаружили заметной закономерности проблемы. Вот что я знаю:
Я включил журнал подшивки сборки и знаю, что подшивка ищет файл в правильном месте.
Наши сборки скомпилированы для .Net 3.5.
У нас была аналогичная проблема.
Мы никогда официально не выясняли, что происходит, но мы сузили проблему до уровня олицетворения в web.config и доступа пользователей к папке, в которой размещен файл сборки.
Мы обнаружили, что иногда рабочий процесс IIS пытается загрузить сборку как лицо, обращающееся к веб-запросу. Мы могли видеть, что поток, который пытался загрузить сборку, в настоящее время олицетворяет пользователя, отправляющего запрос на одну из страниц asp.net.
Как бы то ни было, мы обошли проблему, предоставив доступ аутентифицированным пользователям в домене. Надеюсь, вы сможете найти лучшее решение.