Какой правильный способ развертывания в производственном слоте Azure, в котором есть слоты для развертывания
У меня есть служба приложений Azure, созданная в ноябре 2017 года. Служба приложений называется ManifestAPI.
Я создал слот развертывания QA для службы приложений, который называется ManifestAPI-QA, и с тех пор успешно развертывал свои обновления кода для API в слоте QA. Я выполняю развертывание с помощью API Kudu zipdeploy со своего сервера развертывания Bamboo в слот развертывания Azure QA. Никаких ошибок, и все конечные точки работают нормально.
Сейчас мы готовимся перевести продукт в производство, и я пытаюсь развернуть его в базовом сервисе приложений, ManifestAPI. Поэтому я создал развертывание в Bamboo, используя тот же код выпуска, что и развертывание в слоте QA, и развернул его по URL-адресу ManifestAPI. Однако, когда я пытаюсь запустить API в базовом сервисе приложений, я получаю ошибку 502.5.
Я попытался просто выполнить прямую публикацию из VisualStudio 2017, используя ту же базу кода и профиль публикации из базовой службы приложений ManifestAPI, полагая, что существует проблема с развертыванием Bamboo. Но я получаю ту же ошибку 502,5.
Глядя на сайт Kudu в папке LogFiles в файле eventlog.xml, я вижу следующее;
<Event>
<System>
<Provider Name="IIS AspNetCore Module"/>
<EventID>1000</EventID>
<Level>1</Level>
<Task>0</Task>
<Keywords>Keywords</Keywords>
<TimeCreated SystemTime="2018-06-25T23:03:57Z"/>
<EventRecordID>1583337234</EventRecordID>
<Channel>Application</Channel>
<Computer>RD0003FF11B70E</Computer>
<Security/>
</System>
<EventData>
<Data>Application 'MACHINE/WEBROOT/APPHOST/ManifestAPI' with physical root 'D:\home\site\wwwroot\' failed to start process with commandline 'dotnet .\ManifestAPI.dll', ErrorCode = '0x80004005 : 80008096.</Data>
</EventData>
</Event>
Проверка на ошибку в Google, казалось, подразумевала проблему с библиотеками.Net Core, установленными на самом IIS.
Плюс, поскольку API работает нормально в экземпляре IIS слота развертывания QA, я считаю, что мой код работает хорошо. Итак, я думаю, что должна быть некоторая проблема с экземпляром IIS и файлами.NET Core, которые предоставляет Microsoft.
Я сравниваю Расширения экземпляров ManifestApi и ManifestAPI-QA, и они одинаковы в обоих экземплярах.
ASP.NET Core 2.1 (x86) Runtime 2.1.0-preview2-final No
ASP.NET Core Extensions 2.1.0-preview2-final No
Я попытался выполнить перестановку из рабочего слота QA в слот Production (базовая служба приложений) и получил ту же ошибку 502.5.
Я создал новый слот развертывания под названием ManifestAPI-Prod, клонировав экземпляр ManifestAPI-qa, развернув пакет развертывания в этом слоте и установив строки подключения и параметры приложения, точно совпадающие с тем, что было в разделе "Настройки приложения" для базовой службы приложения. Слот для развертывания ManifestAPI-Prod работал просто отлично.
Итак, я открыл службу поддержки Microsoft в Azure, и до сих пор я потратил более двух дней на то, чтобы узнать, как технические специалисты пытаются это выяснить. Они продолжают говорить, что это должно быть проблемой в моем коде, но это не имеет никакого смысла для меня, потому что точно такой же пакет развертывания работает в слоте QA, а теперь и в слоте Prod. Один техник даже сказал, что я не правильно развернул. Тем не менее, я использую dotnet publish в VS2017, а затем архивирую результирующий каталог файлов и отправляю в Kudu через API zipdeploy. Это прекрасно работает для слотов развертывания, я не могу понять, как я его неправильно внедряю.
На данный момент я не знаю, как развернуть API в производственном (базовом) слоте.
Что мне здесь не хватает?
ОБНОВЛЕНИЕ 27/06/18 Это было решено удалением всех расширений в экземпляре рабочего слота Azure. Затем переустановите расширения Microsoft Core. Блейд Extensions все еще говорил ASP.NET Core Extensions 2.1.0-preview2-final, но когда я подошел к консоли Azure для этого экземпляра и набрал dotnet --info, он перечислил следующее;
.NET Core SDK (reflecting any global.json):
Version: 2.1.301
Commit: 59524873d6
Runtime Environment:
OS Name: Windows
OS Version: 10.0.14393
OS Platform: Windows
RID: win10-x86
Base Path: D:\Program Files (x86)\dotnet\sdk\2.1.301\
Host (useful for support):
Version: 2.1.1
Commit: 6985b9f684
.NET Core SDKs installed:
1.1.8 [D:\Program Files (x86)\dotnet\sdk]
2.1.101 [D:\Program Files (x86)\dotnet\sdk]
2.1.300 [D:\Program Files (x86)\dotnet\sdk]
2.1.301 [D:\Program Files (x86)\dotnet\sdk]
Следует отметить, что список для 2.1.0-preview2-final больше не был в списке файлов, отображаемых dotnet --info
1 ответ
Я не знаю, почему ваше приложение не работает, но я вижу один красный флаг: вы, кажется, используете 2.1.0-preview2-final
, Теперь, когда 2.1 - это GA, вы должны обновить свой проект, чтобы использовать его.
Кроме того, обратите внимание, что предварительная сборка требует установки расширения сайта, а последние биты - нет. Поэтому вам нужно удалить предварительный просмотр Site Extension (вы можете сделать это из портала Azure).