Какой правильный способ развертывания в производственном слоте Azure, в котором есть слоты для развертывания - PullRequest
0 голосов
/ 26 июня 2018

У меня есть служба приложений 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

1 Ответ

0 голосов
/ 26 июня 2018

Я не знаю, почему ваше приложение не работает, но я вижу один красный флаг: вы, похоже, используете 2.1.0-preview2-final. Теперь, когда 2.1 - GA, вы должны обновить свой проект, чтобы использовать его.

Кроме того, обратите внимание, что предварительная сборка требует установки расширения сайта, а последние биты - нет. Поэтому вам нужно удалить предварительный просмотр Site Extension (это можно сделать из портала Azure).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...