.NET Core Web Deploy to production отключает сайт при публикации? - PullRequest
3 голосов
/ 19 апреля 2019

У меня есть веб-сайт .NET Core с использованием IISIntegration ():

 var contentRoot = Directory.GetCurrentDirectory();
 var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(contentRoot)
            .UseSetting("detailedErrors", "true")
            .UseIISIntegration()
            .UseStartup<Startup>()
            .CaptureStartupErrors(true)
            .Build();

И когда я публикую с использованием веб-развертывания, сайт публикуется быстро, потому что сейчас он невелик, но существует примерно 2 секунды, когда вы пытаетесь получить доступ к сайту в процессе производства, пока происходит эта публикация (когда он на самом деле копирует) файлы), что сайт не работает, и вы получите пустую белую страницу с заголовком «Сайт в разработке».

Это не похоже на старый EF 4.x, где при публикации на уже работающем сайте сайт просто вращается и пытается загрузить, когда происходит публикация, но в конечном итоге запрос будет выполнен и загружен после публикации. было сделано.

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

1 Ответ

1 голос
/ 24 апреля 2019

Во время развертывания процесс развертывания помещает файл app_offline.htm в папку. Если модуль ASP.NET Core находит этот файл, он закрывает ваше приложение и вместо этого возвращает содержимое этого файла для всех запросов.

Ссылки:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#locked-deployment-files
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2#app_offlinehtm

Возможно, вы сможете отключить это поведение, установив <EnableMSDeployAppOffline>False</EnableMSDeployAppOffline> в своем профиле публикации, но я не проверял, действительно ли это работает.

...