IIS блокирует файлы даже при наличии App_Offline.htm

IIS блокирует файлы даже при наличии App_Offline.htm

Моя хостинговая компания только что обновила мой сервер и перенесла мои сайты. Я разрабатываю в Visual Studio и публикую сайты в локальной папке, которую затем загружаю через FTP (используя FileZilla, если это имеет значение).

На старом сервере я хранил файл с именем _App_Offline.htmв wwwrootпапке для каждого сайта. Когда я загружал новую версию, я переименовывал его в App_Offline.htm, что позволяло IIS выпускать файлы, я загружал, затем снова переименовывал файл. Все работало отлично.

На новом сервере переименование файла никогда не позволяет IIS выпускать файлы, поэтому я не могу загрузить изменения. Я пробовал останавливать веб-сайт в панели управления, но это не помогло. Я пробовал останавливать пул приложений. Обычно это помогает, но затем его повторный запуск почти всегда заканчивается неудачей. Требуется не менее 15-20 попыток, прежде чем он перезапустится.

Есть ли у кого-нибудь предложения, в чем может быть проблема? Я понимаю, что тут особо нечего сказать, но не уверен, что еще могу сказать. Вот некоторые, возможно, важные детали...

  • Windows Server 2022
  • ИИС 10
  • Сервер работает под управлением Windows FTP
  • Все сайты созданы на основе .NET, версии 6 или 7, в основном Blazor, но некоторые страницы Razor.

Пожалуйста, сообщите, если я могу предоставить дополнительную информацию.

Спасибо

решение1

Как ни странно, хотя вы не можете удалить или перезаписать файлы, пока они находятся во владении IIS, вы можете переименовать их, и сайт продолжит работать, как и прежде.

Итак, один из способов обойти это — переименовать критические файлы (которые, по моему опыту, обычно являются только основной DLL), затем скопировать новую версию, затем использовать трюк app_offline.htm для перезапуска веб-сайта. Когда он перезапустится, вы можете удалить (старые) переименованные файлы.

На практике вы не всегда можете удалить старые файлы немедленно, но если вы переименуете их, добавив префикс zzz, то они будут скрыты от глаз в нижней части списка файлов, и вы сможете удалить их при следующей загрузке.

В целом, ваше время то же самое, но вместо того, чтобы переименовывать app_offline.htm, загружать, а затем переименовывать обратно, вы переименовываете DLL, загружаете и переименовываете app_offline.htm дважды в быстрой последовательности. Преимущество этого в том, что у вас гораздо меньше времени простоя, по сути, сайт не работает только столько времени, сколько вам нужно, чтобы переименовать app_offline.htm и переименовать его обратно.

Надеюсь, это поможет.

Связанный контент