Asp.net Переустановка DLL в GAC - PullRequest
3 голосов
/ 25 августа 2008

Я пытаюсь переустановить DLL в GAC, кажется, все работает нормально, но веб-приложение, которое обращается к нему, по-прежнему использует старую.

Старая DLL является той же версией, что и новая, только с незначительным редактированием, она будет использоваться 50 различными сайтами, поэтому изменение версии и изменение ссылки в web.config не является хорошим решение.

Перезапуск сервера IIS или рабочего процесса невозможен, поскольку уже запущено 50 сайтов, которые должны продолжать это делать.

Кто-нибудь знает, что я делаю неправильно или что я могу сделать, чтобы исправить эту ситуацию?

Ответы [ 2 ]

3 голосов
/ 25 августа 2008

AFAIK, вам нужно перезапустить IIS, чтобы получить свежую ссылку на обновленную DLL. Лучше всего выполнить сброс при низком времени трафика. Если вы используете несколько серверов с балансировкой нагрузки, вы можете предотвратить попадание новых соединений на один сервер, пока все соединения не будут закрыты. После этого обновите библиотеку DLL, перезапустите IIS и верните сервер в пул соединений. Повторите эти действия для каждого сервера без видимых простоев для конечных пользователей.

1 голос
/ 25 августа 2008

Поскольку вы не ссылаетесь на пулы приложений, я предполагаю, что вы используете старую версию IIS. В этом случае вам нужно «прикоснуться» ко всем библиотекам DLL на каждом сайте, который ссылается на библиотеку DLL.

Проблема в том, что код уже загружен, и вам нужно найти ненавязчивый способ перезагрузить приложение. Утилизация пулов приложений - эффективный способ сделать это. Если вы используете старый IIS, у которого нет пулов приложений, то обновление последних измененных файлов / bin / folder или web.config перезагрузит приложение, не затрагивая другие сайты.

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

...