У меня есть служба приложений 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 DLL, установленных на самом 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, и до сих пор я потратил более 2-х дней на поиски техников, пытающихся это выяснить. Они продолжают говорить, что это должно быть проблемой в моем коде, но это не имеет никакого смысла для меня, потому что точно такой же пакет развертывания работает в слоте QA, а теперь и в слоте Prod. Один техник даже сказал, что я не правильно развернул. Тем не менее, я использую публикацию dotnet в VS2017, а затем архивирую результирующий каталог файлов и отправляю в Kudu через API zipdeploy. Это прекрасно работает для слотов развертывания, я не могу понять, как я его неправильно внедряю.
На данный момент я не знаю, как развернуть API в производственном (базовом) слоте.
Что мне здесь не хватает?
ОБНОВЛЕНИЕ 6/27/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