
Моя хостинговая компания только что обновила мой сервер и перенесла мои сайты. Я разрабатываю в 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 и переименовать его обратно.
Надеюсь, это поможет.