Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top