Приложение .NET Core не может запускаться в IIS из-за ErrorCode = '0x80004005: 80008083

У меня есть приложение .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.?

Как это исправить?

Ответы

Ответ 1

Поскольку VS2017 RC поставляется с новой версией .NET Core SDK (.NET Core 1.0.4 SDK 1.0.1), вы необходимо также обновить структуру на сервере.

Ответ 2

На данный момент существует простой способ увидеть, что такое фактическая ошибка. Откройте раздел Консоль из службы App, затем попробуйте запустить приложение dotnet. Оттуда мы можем получить полное сообщение об ошибке и информацию о трассе: enter image description here

Ответ 3

Код ошибки: 0x80004005 означает, что файл отсутствует или недоступен.

Подкод: 80008083 представляется конфликтом версии.

Эта ошибка означает, что на сервере должна быть установлена ​​другая версия dotnet.

Ответ 4

Возможное решение, которое сработало для меня, заключается в том, что я добавил это в свой профиль публикации в Visual Studio:

<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>

Я полагаю, что это заставит хост использовать файлы, необходимые для запуска приложения, вместо того, чтобы полагаться на спецификации, заданные в целевом манифесте, что может быть неверно (либо среда выполнения /sdk на сервере, либо ваша локальная версия конфликтует с этими спецификациями).

Ответ 5

Я опубликовал новое веб-приложение.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

Ответ 6

У меня тоже была эта проблема, и я решил опубликовать свое решение. Я не уверен, предназначено ли это или нет, но я не думаю, что 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.

Тогда сайт работал нормально!

Ответ 7

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

Ответ 8

Для меня я должен был убедиться, что у меня установлены последние версии .NET Core Runtime и Windows Hosting Module, все из которых доступны из https://www.microsoft.com/net/download/windows (новые версии всегда должны быть доступны здесь).

В частности, я установил:

Полная среда .Net Framework 4.7.1 может не понадобиться, если вы действительно используете только сетевые приложения .Net Core на своем сервере, но я установил ее для безопасности.

Ответ 9

Спасибо Deadlydog! Именно то, что мне нужно!

Ответ 10

Для.net core 2.0

  1. Проверьте установленный DotNetCore.2.0.Y-WindowsHosting. Если ваш проект равен 2.1, тогда установите 2.1. соответственно)
  2. После установки Windows требуется перезагрузка компьютера.
  3. Открытая powershell; cd installation_directory; dotnet abcd.dll Это предварительный контроль, который вы можете проверить после установки WindowsHosting...

Ответ 11

Все, что мне нужно было сделать, чтобы исправить эту ошибку, это перезагрузить компьютер для разработки и перекомпилировать и повторно опубликовать сайт. VS не отвечал должным образом.

Ответ 12

Я работаю на IIS, и у меня была ошибка 0x80004005: 0, которую я нашел в Просмотр событий → Журналы приложений. Это было вызвано тем, что у моего пула приложений не было доступа к папке на веб-сайте.

Я решил это, изменив удостоверение пула приложений на одно с доступом к папке.