asp.net core 2.1 Ошибка HTTP 502.5 - PullRequest
       0

asp.net core 2.1 Ошибка HTTP 502.5

0 голосов
/ 26 августа 2018

Когда я пытаюсь запустить свое решение, я получаю в браузере:

Ошибка HTTP 502.5 - сбой процесса

Отладка прекращается почти сразу после запуска, и в Visual Studio нет сообщений об ошибках.

В окне вывода это единственное сообщение:

Программа '[30700] dotnet.exe' завершила работу с кодом -2147450730 (0x80008096).

Проект работал нормально, я только что установил пакет nuget, и это начало происходить. Я попытался удалить его и удалить кэш пакета, но это все еще происходит.

Средство просмотра событий показывает ошибку с модулем IIS Express AspNetCore.

Приложению 'MACHINE / WEBROOT / APPHOST / PROJECTNAME' с физическим корнем 'E: \ path \ ProjectName \' не удалось запустить процесс с командной строкой 'e: \ program files (x86) \ microsoft visual studio \ 2017 \ community \ common7 \ ide \ extensions \ microsoft \ web tools \ projectsystem \ VSIISExeLauncher.exe -argFile "C: \ Users \ имя пользователя \ AppData \ Local \ Temp \ tmp49E1.tmp" ', ErrorCode =' 0x80004005: 0.

Я немного растерялся, потому что нет ошибки, чтобы продолжить.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Хотя на него уже был дан ответ, я опубликую здесь свое решение для той же проблемы (ошибка HTTP 502.5 при запуске моего веб-приложения на Asp.NET CORE 2.1, код ошибки 0x80004005), которая имеет другую причину, как ссылку на другую возможность .


Краткий ответ:

Если в имени приложения есть пробел (символ) , в текущей версии Visual Studio (15.8.9) есть ошибка, которая не содержит кавычек, делающих его буквальным строковый аргумент в момент исполнения (через командную строку) в файле web.config, сгенерированный при публикации вашего веб-приложения.

Пример:

web.config, созданный Visual Studio (версия 15.8.9 - дата: 2018-ноябрь-05):

[...]
<aspNetCore processPath="dotnet" arguments=".\My Web App.dll" stdoutLogEnabled=... />
[...]


web.config с правильной цитатой:

[...]
<aspNetCore processPath="dotnet" arguments='".\My Web App.dll"' stdoutLogEnabled=... />
[...]

В атрибуте arguments вы можете видеть во втором примере, что я включил (вручную) одинарные кавычки, заставив его передать полную строку ".\My Web App.dll" в качестве аргумента в момент выполнения.



Подробный ответ:

Каждый раз, когда я обновляю свой Visual Studio для более нового SDK (и использую в своем приложении самую последнюю версию Asp.net Core), он выдает ошибку Http 502.5, ЕСЛИ , я не обновляю библиотеки времени выполнения на моем сервере тоже. Поэтому, очевидно, первое, что я сделал, это обновил библиотеки времени выполнения на сервере (что всегда решало эту проблему для меня), но на этот раз это не сработало.

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

Итак, я знал, что с моим веб-приложением что-то не так. Начальная конфигурация (в ядре asp.net) находится в файле web.config.

[...]
<aspNetCore processPath="dotnet" arguments=".\My Web App.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
[...]

В Asp.net Core веб-приложение запускается / запускается из командной строки (приглашения) в Windows с помощью IIS (я строго говорю об общем сценарии).

До сих пор между опубликованными файлами всегда был файл .exe, с которого все начиналось, и это был файл, вызываемый модулем IIS через командную строку.

Начиная с Asp.net CORE 2.1 (и некоторых незначительных обновлений, которые я точно не знаю), файла .exe нет, и ПУТЬ Web-приложения передается по аргументу. Таким образом, у вас есть команда dotnet и аргумент этой команды, указанный как атрибут argument в файле web.config. (как показано в примере выше)

Взглянув на мой опубликованный файл web.config, вы можете увидеть атрибуты processPath и arguments. В предыдущем тесте я знал, что dotnet была распознанной командой, так как я мог запустить свое веб-приложение в командной строке Windows. Затем, внимательно изучив атрибут arguments, я обнаружил, что для значения не было (окружающего) кавычки, в котором были бы пробелы.

Таким образом, при запуске моего веб-приложения вместо dotnet команда получает полный путь .\My Web App.dll, она получает 3 различных аргумента: .\My, Web, App.dll.

Поскольку значение атрибута arguments передается через командную строку, оно должно иметь кавычки при передаче в командную строку, становясь литеральной строкой.

Итак, я вручную добавил необходимые окружающие кавычки в значение атрибута arguments, в файл web.config, и мое веб-приложение стало работать отлично!

Чтобы увидеть пример ошибки и как ее исправить, просто посмотрите на примеры «Короткого ответа».


Другая полезная информация (для Asp.net Core 2.0 и выше, с Windows / IIS):

Если у вас было веб-приложение, которое работало и больше не работает, выдает ошибку 502,5:

Вероятно, это проблема управления версиями библиотек времени выполнения. Ваше веб-приложение запрашивает новые библиотеки ядра asp.net, а на вашем сервере их пока нет.Просто обновите библиотеки времени выполнения на вашем сервере, и это должно решить проблему.Загрузите его с Microsoft (для текущей версии Asp.net Core 2.1 вы можете скачать по этой ссылке: https://www.microsoft.com/net/download/dotnet-core/2.1).

Как запустить веб-приложение вручную, для устранения неполадок:

Откройте командную строку Windows и попробуйте выполнить команду dotnet.Если он не распознается, то вам нужно установить (или починить) модуль ядра asp.net и его зависимости (Google - ваш друг. Просто найдите, как установить ядро ​​asp.net).Кроме того, вы можете проверить версию библиотек времени выполнения Asp.net Core с помощью команды dotnet --version.

Как только команда dotnet будет распознана, вы можете запустить свое веб-приложение вручную.Перейдите в папку, где находятся ваши файлы веб-приложений (обычно они будут в inetpub, wwwroot и т. Д.).Затем найдите файл .dll, который является сборкой вашего приложения.Как правило, оно будет иметь название вашего приложения (довольно просто, верно !?).Затем выполните его с помощью команды dotnet ".\My Web App.dll".

Пример:

enter image description here

Если естьошибка, вы увидите некоторую полезную информацию в окне подсказки.Если веб-приложение запускается правильно, то это проблема с конфигурацией запуска, возможно, файл web.config.

Другой способ просмотреть более подробную информацию о сбое ядра asp.net:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.1#application-event-log

Доступ к журналу событий приложения:

  1. Откройте меню «Пуск», найдите «Просмотр событий» и выберите приложение «Просмотр событий».
  2. В «Просмотр событий» откройте узел «Журналы Windows».
  3. Выберите «Приложение», чтобы открыть событие приложения.Журнал.
  4. Поиск ошибок, связанных с ошибкой приложения.Ошибки имеют значение IIS AspNetCore Module или IIS Express AspNetCore Module в столбце Источник.

Подробная информация о моей проблеме:

При выполнении запросов была представлена ​​следующая ошибка: Ошибка HTTP 502.5 - Сбой процесса.

При просмотре средства просмотра событий (Windows Server),информация была такова: «Приложение» ... My Web App »с физическим корнем« C: \ ... \ ... \ »не удалось запустить процесс с командной строкой« dotnet. \ My Web App.dll », ErrorCode = '0x80004005: 1. "

Итак, мой код ошибки: 0x80004005, а субкод - 1.

Надеюсь, это кому-нибудь поможет:)

0 голосов
/ 26 августа 2018

Хорошо!Это связано с отсутствующей проблемой соответствующего .NET Core SDK.Версии пакета вашего проекта выше, чем версия SDK, установленная на вашем компьютере.

Загрузите последнюю версию v2.1.401 (на момент получения ответа) отсюда: Загрузите .NET Core SDK и установите его.

Теперь перезагрузите компьютер изапустите проект еще раз.

Надеюсь, ваша проблема будет решена!

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