Ссылочная сборка не загружается в новом потоке на IIS 7 - PullRequest
0 голосов
/ 25 мая 2010

У меня есть процесс, при котором пользователь загружает файл на веб-сайт, где файл затем обрабатывается и загружается в базу данных. Процесс проверки файла может занять несколько минут, поэтому, как только файл загружен, я создаю новый поток и выполняю обработку в этом втором потоке. Это прекрасно работает на моей локальной машине, но совсем не работает на моем тестовом сервере IIS 7.

После некоторых исследований я обнаружил, что проблема заключается в том, что процесс пытается загрузить ссылку на Castle и не может найти DLL. У меня есть копия Castle DLL в моей корзине, и она работает в другом месте моего приложения. Я запустил Fuslog и обнаружил, что он пытается загрузить замок из неправильного места. Он пытается загрузить из c: / windows / system32 / inetsrv /.

Похоже, что в IIS 7 второй поток выполняется в другом контексте или что-то в этом роде.

Итак, вопрос в том, что я могу сделать, чтобы найти Castle в папке приложения BIN?

1 Ответ

0 голосов
/ 26 мая 2010

Я не очень знаком с IIS, но думаю, что по какой-то причине рабочая директория изменилась. Одна возможность - изменить рабочий каталог обратно в папку bin. Другая возможность - подписаться на событие AppDomain.AssemblyResolve, которое будет вызываться на любом этапе, когда CLR не сможет загрузить сборку - внутри обработчика событий вы можете загрузить сборку из dll и вернуть ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...