2010-11-11 2 views
4

У меня есть сайт ASP.NET MVC, который использует внутреннюю dll для некоторого материала PInvoke. DLL находится в папке/bin рядом с другими сборками. Это хорошо работает, но если я хочу заменить содержимое папки/bin на самый новый набор файлов, скопировав их на существующие файлы (это на тестовом сервере), то DLL PInvoke заблокирована/использована рабочим w3wp.exe процесс и не может быть заменен, кроме как после повторного использования приложения или перезапуска IIS.IIS и ASP.NET блокируют мою DLL PInvoke

Является ли это стандартным поведением или могу каким-то образом поручить среде выполнения ASP.NET использовать теневую копию Dll PInvoke, аналогичную регулярным сборкам?

ответ

2

AFAIK, если IIS имеет дескриптор DLL, вы не сможете заменить DLL.

Вы упомянули AppPool Рециркуляция и IIS Перезагрузка ...

Я думаю, вы не могли использовать прикасаясь файл web.config. Я имею в виду, откройте ваш web.config в блокноте, внесите изменения [например, добавьте пробел и удалите его] и сохраните файл. Это приведет к переработке вашего домена приложения, и, следовательно, ссылка на сборку в идеале должна быть выпущена [если это не общая сборка].

+0

Я знаю об утилизации при редактировании web.config, я был просто удивлен тем, что я не мог скопировать замену DLL PInvoke аналогично обычным сборкам .NET и искал некоторые более глубокие знания о том, как возможно, проинструктируйте IIS/w3wp не иметь жесткого дескриптора файла. –