Ответ 1
Поскольку VS2017 RC поставляется с новой версией .NET Core SDK (.NET Core 1.0.4 SDK 1.0.1), вы необходимо также обновить структуру на сервере.
У меня есть приложение .NET Core. Он работает локально с VS2017 и Kestrel. Он выполняется локально в IIS. Однако на сервере он не запускается с сообщением 502.5 - Process Failure
.
В журналах событий я получаю более подробную информацию:
Приложение "..." с физическим корнем "C:...\my-app-folder" не удалось запустить процесс с помощью командной строки "dotnet". \MyApp.dll ', ErrorCode =' 0x80004005: 80008083.
Предыдущие сборки приложения отлично работают на одном сервере, с той лишь разницей, что они были опубликованы с VS2017RC (2 и 3), и это первая сборка с полностью выпущенным VS2017.
Что означает ErrorCode = '0x80004005 : 80008083.
?
Как это исправить?
Поскольку VS2017 RC поставляется с новой версией .NET Core SDK (.NET Core 1.0.4 SDK 1.0.1), вы необходимо также обновить структуру на сервере.
На данный момент существует простой способ увидеть, что такое фактическая ошибка. Откройте раздел Консоль из службы App, затем попробуйте запустить приложение dotnet. Оттуда мы можем получить полное сообщение об ошибке и информацию о трассе:
Код ошибки: 0x80004005
означает, что файл отсутствует или недоступен.
Подкод: 80008083
представляется конфликтом версии.
Эта ошибка означает, что на сервере должна быть установлена другая версия dotnet.
Возможное решение, которое сработало для меня, заключается в том, что я добавил это в свой профиль публикации в Visual Studio:
<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>
Я полагаю, что это заставит хост использовать файлы, необходимые для запуска приложения, вместо того, чтобы полагаться на спецификации, заданные в целевом манифесте, что может быть неверно (либо среда выполнения /sdk на сервере, либо ваша локальная версия конфликтует с этими спецификациями).
Я опубликовал новое веб-приложение.NET Core 2.0 в Azure App Service и ударил эту ошибку.
Попадание на сайт:
Ошибка HTTP 502.5 - Отказ процесса Общие причины этой проблемы: не удалось запустить процесс приложения. Процесс приложения запущен, но затем остановлен. Процесс приложения запущен, но не смог прослушать настроенный порт.
Отладка: использование приложений Azure Application Insights и службы приложений - дополнительные инструменты (KUDU), которые смотрят на консоли Tools - Debug - просмотр папки LogFiles eventlog.xml имел строку журнала:
Приложение 'MACHINE/WEBROOT/APPHOST/xxxx' с физическим корнем 'D:\home\site\wwwroot \' не удалось запустить процесс с помощью dotline.\WebApp.dll ', ErrorCode =' 0x80004005: 8000808c.
<Provider Name="IIS AspNetCore Module"/>
<EventID>1000</EventID>
<Level>1</Level>
<Task>0</Task>
<EventData>
<Data>Application 'MACHINE/WEBROOT/APPHOST/xxxx' with physical root 'D:\home\site\wwwroot\' failed to start process with commandline 'dotnet .\WebApp.dll', ErrorCode = '0x80004005 : 8000808c.</Data>
</EventData>
</Event>
Решение
Этот ответ: Удаление папки wwwroot в azure и публикация снова из VS, работало для меня, несмотря на то, что первоначально не было традиционного приложения Core 1.1.
Запустите Azure Console в приложении и удалите содержимое папки wwwroot, а затем повторно разверните.
RMDIR wwwroot/S/Q
Дальнейшее тестирование После этого было очень полезно для тестирования, и оно работает, если следовать идентично, а затем отклоняться, однако вам нужно найти ошибки. https://docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-azure-webapp-using-vs
У меня тоже была эта проблема, и я решил опубликовать свое решение. Я не уверен, предназначено ли это или нет, но я не думаю, что dotnet core 2 поддерживает символы пробела в имени вашего проекта.
Я создал и опубликовал проект под названием "Приложение Mikes", и при попытке запустить сайт с IIS я получил эту ошибку (приложение .NET Core не удалось запустить в IIS из-за ErrorCode = "0x80004005"). Когда я включил stdoutLogs через файл web.config, я обнаружил ошибку:
Не найден исполняемый файл, соответствующий команде "dotnet-.\Mikes"
Что я нахожу странным, потому что файл web.config правильно показывает путь DLL под аргументами, которые были ".\Mikes App.dll"
<aspNetCore processPath="dotnet" arguments=".\Mikes App.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
Я создал новый проект core 2 для dotnet в Visual Studio и назвал его "Mikes-App", переиздал его и обновил каталог на своем сайте IIS.
Тогда сайт работал нормально!
Я столкнулся с той же проблемой, и у меня только был установлен dotnet cor 2 на моем сервере, поэтому, установив эту ссылку, вы можете запустить свой код в других версиях ядра dot net. Не забудьте перезапустить IIS. https://download.microsoft.com/download/6/A/2/6A21C555-B042-46EA-BBB4-368AACCB3E25/DotNetCore.1.0.8_1.1.5-WindowsHosting.exe
Для меня я должен был убедиться, что у меня установлены последние версии .NET Core Runtime и Windows Hosting Module, все из которых доступны из https://www.microsoft.com/net/download/windows (новые версии всегда должны быть доступны здесь).
В частности, я установил:
Полная среда .Net Framework 4.7.1 может не понадобиться, если вы действительно используете только сетевые приложения .Net Core на своем сервере, но я установил ее для безопасности.
Спасибо Deadlydog! Именно то, что мне нужно!
Для.net core 2.0
dotnet abcd.dll
Это предварительный контроль, который вы можете проверить после установки WindowsHosting...Все, что мне нужно было сделать, чтобы исправить эту ошибку, это перезагрузить компьютер для разработки и перекомпилировать и повторно опубликовать сайт. VS не отвечал должным образом.
Я работаю на IIS, и у меня была ошибка 0x80004005: 0, которую я нашел в Просмотр событий → Журналы приложений. Это было вызвано тем, что у моего пула приложений не было доступа к папке на веб-сайте.
Я решил это, изменив удостоверение пула приложений на одно с доступом к папке.