Asp.Net Core 2.0 на Azure дает 502,5
У меня есть небольшое веб-приложение, разработанное с Asp.Net Core 1.1, развернутое на Azure, и оно работает хорошо. Я просто перенес проект, чтобы использовать Asp.Net Core 2.0 и попытался развернуть его на Azure. Развертывание было прекрасным, но когда я открываю сайт, я получаю ошибку 502.5. Когда я проверяю поток журнала Azure, я получаю следующую ошибку:
Эта ошибка возникает, когда приложение CGI не возвращает действительный набор заголовков HTTP или когда прокси или шлюз не смогли отправить запрос к родительскому шлюзу. Возможно, вам понадобится трассировка сети или обратитесь к администратору прокси-сервера, если это не проблема CGI.
Бесполезно говорить, что он хорошо работает на моей машине разработки с тем же кодом. Обратите внимание, что я также использую Entity Framework Core 2.0, хотя я дезактивировал создание базы данных на Azure (чтобы проверить, не является ли это причиной).
Информацию о том, как я перешел с 1.1 на 2.0, - это изменение параметров целевой инфраструктуры на "netcoreapp2.0" и использование пакета NuGet "Microsoft.AspNetCore.All". Чтобы быть уверенным, я также удалил свой публичный профиль и заново создаю его.
Возможно ли, что Asp.Net Core 2.0 еще не доступен на Azure? Я новичок в Asp.Net Core, поэтому я не знаю, когда новые версии доступны на Azure.
ИЗМЕНИТЬ
Когда я пытаюсь запустить мое приложение с помощью NET CLI через консоль отладки, как было предложено natemcmaster, у меня возникла следующая проблема:
Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборку "Microsoft.AspNetCore.Hosting.Abstractions, Версия = 2.0.0.0, Культура = нейтраль, PublicKeyToken = adb9793829ddae60 '. Установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)
Я загрузил DLL на свой рабочий стол и проверил версию с Dot Net Peak, и, действительно, DLL - это 1.1.2, хотя я создал проект с Visual Studio и сразу публиковал его, так это проблема с Visual Studio? Или Нугет?
Ответы
Ответ 1
проблема на самом деле исходила из того факта, что сначала мое веб-приложение использовало .net core 1.1, которое развертывает всю DLL в папке "wwwroot" веб-приложения. Однако, с asp.net core 2.0, он больше не делает этого, поскольку DLL выбраны из глобального хранилища. Однако, поскольку Visual Studio не очищает папку назначения до публикации, я столкнулся с ситуацией, когда 1.1 DLL была в моем wwwroot, поэтому веб-сайт собирал эти, а не 2.0 в папке магазина.
Это объясняется более подробно здесь: https://github.com/Azure/app-service-announcements-discussions/issues/2#issuecomment-313816550
Ответ 2
Другие объяснили причину, по которой это происходит. Я хотел бы предложить другое - возможно более простое - решение проблемы.
Просто измените настройки, чтобы удалить файлы, которые уже находятся на Azure - см. ниже:
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответ 3
Проверьте файлы журналов либо на портале, либо удаленно получив доступ к D:\home\LogFiles
.
Иногда журналы не указывают, что происходит не так. Еще один хороший способ исследовать дальше - попробовать запустить приложение ASP.NET Core из консоли Debug. Если вам не хватает общей версии фреймворка или есть другая ошибка при запуске, это будет более заметным из консоли Debug.
Перейдите к
https://(your web site name here).scm.azurewebsites.net/DebugConsole/
Ваш сайт будет находиться в D:\home\site\wwwroot
. Вы можете запустить его, выполнив:
cd D:\home\site\wwwroot
dotnet MyWebApp.dll
Если приложение все еще не запускается, убедитесь, что D:\home\site\wwwroot\web.config
доступен и настроен для использования базового модуля ASP.NET. https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module
Ответ 4
См. https://github.com/Azure/app-service-announcements/issues/14
"Ожидается, что развертывание завершится к пятнице 30 июня".
Ответ 5
В моем случае проблема возникла из-за того, что AppService в то время поддерживал 2.0.0-preview2-006497, но у меня был установлен 2.0.0-preview3-006890, который использовался при сборке.
Поэтому я добавил global.json
для использования предварительного просмотра SDK, и он работал тогда
Ответ 6
В моем случае это было вызвано наличием пробела в имени проекта.
- Я могу легко добавить пробел, publish = > 502.5.
- Удалить место, опубликовать = > хорошо.
Трудно поверить, но я легко копирую его с помощью выше.
Также использование "Удалить дополнительные файлы в месте назначения" за @Sam Отвечать
Ответ 7
Я не знаю, помогло ли это кому-нибудь однажды, но в моем случае я использовал:
-Microsoft.AspNetCore.All 2.0.5
Переход к Microsoft.AspNetCore.All 2.0.3 разрешает мою проблему