Будет ли публикация кода на рабочем сервере IIS мешать выполнению http-запросов?

Я хотел бы спросить, можно ли публиковать .net core web проект на production IIS сервер напрямую через WebDeploy или Folder профиль публикации.

Как насчет уже запущенных http-запросов? Было бы лучше сначала остановить веб-сайт IIS, обновить коды и снова запустить веб-сайт? Но я не знаю, будет ли остановка веб-сайта IIS ждать запуска http-запросов или останавливать их принудительно. Обрабатывает ли профиль публикации это по умолчанию (например, с профилем публикации папки часто случается, что файлы используются процессом IIS, и операция публикации завершается неудачно)?

Каков ваш процесс публикации, вы останавливаете экземпляр веб-сайта?


person Muflix    schedule 14.09.2020    source источник


Ответы (1)


Файл конфигурации будет сохранен при прямой публикации основного проекта .net в IIS.

При публикации основного приложения .net веб запускается не в iis, а как отдельное внепроцессное консольное приложение с использованием компонентов Kestrel. AspNetCoreModule подключается к конвейеру IIS в начале цикла запросов, перенаправляет весь трафик в следующее основное приложение, и все запросы перенаправляются в основной процесс.

Запросы поступают из Интернета и поступают в драйвер http.sys режима ядра, который направляется в IIS через основной порт (80) или порт SSL (443). Затем запрос перенаправляется в ваше приложение ASP.NET Core на HTTP-порт, настроенный для вашего приложения, который не является портом 80/443. По сути, IIS действует как обратный прокси-сервер, просто перенаправляя запросы на ваш ASP.NET Core Web, на котором работает веб-сервер Kestrel на другом порту.

Поэтому я предлагаю вам остановить веб-сайт во время публикации, а затем перезапустить его. Файлы в папке развертывания блокируются во время работы приложения. Заблокированные файлы нельзя перезаписать во время развертывания. Я рекомендую вам перевести исходное приложение в автономный режим при публикации нового веб-сайта, что также рекомендуется Microsoft. Более подробную информацию можно найти в следующих документах。

Принятие Приложение находится в автономном режиме перед публикацией.

Заблокированные файлы развертывания

person Bruce Zhang    schedule 15.09.2020
comment
Спасибо за это отличное объяснение. Я изменю процесс развертывания в соответствии с этим ???? - person Muflix; 16.09.2020