Хотя на него уже был дан ответ, я опубликую здесь свое решение для той же проблемы (ошибка 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"
.
Пример:
Если естьошибка, вы увидите некоторую полезную информацию в окне подсказки.Если веб-приложение запускается правильно, то это проблема с конфигурацией запуска, возможно, файл web.config
.
Другой способ просмотреть более подробную информацию о сбое ядра asp.net:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.1#application-event-log
Доступ к журналу событий приложения:
- Откройте меню «Пуск», найдите «Просмотр событий» и выберите приложение «Просмотр событий».
- В «Просмотр событий» откройте узел «Журналы Windows».
- Выберите «Приложение», чтобы открыть событие приложения.Журнал.
- Поиск ошибок, связанных с ошибкой приложения.Ошибки имеют значение 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
.
Надеюсь, это кому-нибудь поможет:)