IIS не запускает сайт ASP.NET Core - ошибка HTTP 502.5
У нас есть машина Windows 2012 R2.
У меня был уже существующий сайт ASP.NET Core, на котором был запущен рабочий веб-сайт ASP.NET Core.
Однако, когда я опубликовал сайт снова сегодня месяц спустя после внесения изменений, я больше не могу получить доступ к сайту и получить следующую ошибку в моем браузере
Ошибка HTTP 502.5 - Отказ процесса
Для получения дополнительной информации посетите: http://go.microsoft.com/fwlink/?LinkID=808681
Если я вхожу на сервер и нажимаю на exe в моем развернутом каталоге, он открывает командную строку и показывает мой сайт на порту 5000. Если я получаю доступ к сайту на http://localhost:5000 он работает отлично, поэтому проблема связана с IIS, а не с самим сайтом.
Если я вхожу на сервер, я вижу следующее в Windows EventViewer
![введите описание изображения здесь]()
Приложение "MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/MySite" с физическим корнем "D:\Sites\MySite" не удалось запустить процесс с помощью командной строки "% LAUNCHER_PATH%" % LAUNCHER_ARGS% ', ErrorCode =' 0x80070002: 0.
Когда я перехожу к ссылке в сообщении об ошибке браузера, она упомянула о переустановке пакета .net Core Hosting, который я сделал. Однако сообщение об ошибке в браузере одинаков.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore requestTimeout="02:00:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
Когда я смотрю на папку журнала приложений, файл stdout создается каждый раз, когда он пытается получить доступ к этому сайту, но каждый раз, когда он имеет размер 0 КБ и пустое содержимое.
Почему IIS отказывается работать внезапно, когда он работал ранее, но приложение работает, если я напрямую обращаюсь к скомпилированному exe?
Ответы
Ответ 1
Ваша проблема - плохой файл web.config:
<aspNetCore requestTimeout="02:00:00"
processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
Путь% LAUNCHER_PATH% не существует в вашей системе, это даже не актуально. Это должно быть что-то вроде:
<aspNetCore requestTimeout="02:00:00"
processPath=".\yourAppName.exe"
arguments="somePossibleArgument"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
Обратите внимание, что файл web.config полностью игнорируется, если приложение запускается из командной строки, поэтому вы не получаете сообщение об ошибке.
Ответ 2
У меня была такая же проблема, моя проблема была в том, что IIS не смог получить путь к dotnet. Мне удалось это исправить, указав путь к dotnet.exe
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\your-project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
</system.webServer>
</configuration>
Ответ 3
Моя проблема заключалась в том, что процесс не запускался из-за недействительной escape-последовательности в моем файле appsettings.json
.
Я использую dotnet для запуска опубликованной ASPNET Core 2 web api dll. Проблема была обнаружена путем открытия командной строки и перехода к каталогу, в котором находятся файлы сайта. После этого я выполнил команду:
dotnet mySite.dll
(смените mySite.dll на главную dll вашего приложения. Также убедитесь, что исправлена версия пакета хостинга .NET Core Host для Windows Server.)
Нажав Enter, он сразу же разбился, давая точную обратную связь в окне консоли о том, что было не так. Это отличный способ помочь определить ошибки при запуске, если у вас возникли подобные проблемы.
Ответ 4
Это полностью свело меня с ума, учитывая, что я перепробовал все возможные исправления, найденные в Интернете, но у меня ничего не получалось. Пока я не узнал, проблема заключалась в том, что в названии моего проекта было пробел: App WebAPI.dll. Поэтому, когда "dotnet.\App WebAPI.dll" пытается выполнить его, происходит сбой, потому что он действительно пытается выполнить "dotnet.\App" и забывает вторую часть после пробела. Переименование моего решения и имен проектов для удаления пробелов (AppWebAPI) решило мою проблему. Я надеюсь, что это исправление экономит время людей, пытающихся выяснить проблему.
Ответ 5
Я столкнулся с этой проблемой при развертывании приложения. На моей стороне было несколько проблем:)
Я очень внимательно просмотрел эту страницу: Ядро ASP.NET: публикация в IIS
Во-первых, у меня не было всех частей .NET Core Host Server Hosting. В результате я использовал самостоятельное развертывание, зависящее от fremework, вместо автономного развертывания. У нас много приложений и они не нужны/не нужны в своих версиях ядра .net. На коробке будет слишком много версий .net.
Также обратите внимание, что если ваши администраторы выполнили какие-либо обновления/обновления на сервере, они могли бы поднять вашу установку ASP.NET Core (см. ASP.NET Core: публикация в разделе IIS)
Затем мне пришлось исправить мой web.config... вот мой рабочий опубликованный web.config:
Я не публиковал как *.exe, я сделал *.dll(обратите внимание на значение моих аргументов). Кроме того, мой processPath установлен в "dotnet".
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\DT.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
Кроме того, убедитесь, что ваши параметры project.json настроены на совместимость с вашей серверной средой (см. ASP.NET Core: публикация в IIS раздел устранения неполадок)
Вот копия моего project.json, если она может быть полезной:
{
"version": "2.0.1.0",
"dependencies": {
"DT.Common": "2.*",
"DT.Configuration": "2.*",
"DT.Services": "2.*",
"DT.Web.ViewModels": "2.*",
"Microsoft.ApplicationInsights.AspNetCore": "1.0.2",
"Microsoft.AspNetCore.Authentication": "1.1.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "1.1.0",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.AspNetCore.Routing": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel.Https": "1.1.0",
"Microsoft.AspNetCore.Session": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.Extensions.Caching.SqlServer": "1.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.Graph": "1.1.1",
"Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.6"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.1.0-preview4-final",
"imports": "portable-net45+win8+dotnet5.6"
},
"Microsoft.Extensions.Caching.SqlConfig.Tools": "1.1.0-preview4-final"
},
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
}
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"views/**/*.cshtml",
"appsettings.json",
"appsettings.*.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "bower install", "gulp buildprod" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Ответ 6
У меня была та же проблема с Visual Studio, которая преобразует файл web.config и меняет processPath и аргументы. Как указано на сайте Microsoft, вы можете добавить исключение в файл project.csproj:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
Это позаботилось о моей проблеме с изменением значения пути для публикации, но у меня все еще проблема, но Visual Studio сама меняет его при отладке.
Ответ 7
У меня была похожая проблема. Я только что выполнил шаги по устранению неполадок: Check the system event log for error messages
и обнаружил следующее в Application 'MACHINE/WEBROOT/APPHOST/[MyFolder]' with physical root 'C:\inetpub\wwwroot\[MyFolder]\' failed to start process with commandline 'dotnet.\MyApp.dll', ErrorCode = '0x80004005: 80008083.
просмотра событий " Application 'MACHINE/WEBROOT/APPHOST/[MyFolder]' with physical root 'C:\inetpub\wwwroot\[MyFolder]\' failed to start process with commandline 'dotnet.\MyApp.dll', ErrorCode = '0x80004005: 80008083.
Затем я перезапустил dotnet.\MyApp.dll
из терминала и получил ответ:
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.1' was not found.
- Check application dependencies and target a framework version installed at:
\
- Alternatively, install the framework version '2.1.1'.
Таким образом, причина та же, что ответил jv_, просто у вас не установлена совместимая версия фреймворка. В итоге я использовал режим автономного развертывания, и он сработал.
Ответ 8
Мой проект отлично работал в разработке, но после развертывания/публикации в Интернете он выбрасывал 502.5 Process Failure
.
Причина оказалась в том, что я обновил с помощью Microsoft.AspNetCore.All 2.0.5
до 2.0.6
. Работала отлично после возврата версии.
Ответ 9
Проблема: Когда я внедряю веб-API ядра сети asp, для processPath устанавливается точка. Приложение не запускается, и средство просмотра событий показывает вышеуказанную ошибку.
Решение:
Идентификатор пула приложений должен быть настроен для загрузки профиля.
Перейдите к: Пул приложений → NetCore (ваш пул) → Расширенные настройки → Загрузить профиль пользователя → Установите для этого параметра значение true
Я подтвердил, что переключение на ложное воссоздание ошибки и возвращение к истинному разрешило ее.
Ответ 10
Для меня решением было просто установить .Net Core 2.2 SDK
и все заработало.
https://dotnet.microsoft.com/download
Ответ 11
У меня была та же проблема, за исключением того, что я обновил Visual Studio в своей среде разработки, и на сервере требовалось обновление среды выполнения .NetCore. После того, как я обновил время выполнения на сервере, мне было хорошо идти снова.
Я думаю, моя проблема с обновлением VS 2017 была моей проблемой ;-)
Ответ 12
Я хотел иметь возможность запускать мой API на основе .Net Core из IIS из моего каталога разработки, не борясь с файлом web.config. Visual Studio управляет web.config на основе настроек профиля проекта. Вам просто нужно добавить профиль IIS в начало отладки, чтобы VS знал, что делать с вашим web.config. Инструкции здесь:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/development-time-iis-support?view=aspnetcore-2.2
Теперь я могу просто немного кодировать, компилировать и обновлять свой браузер, не дожидаясь запуска браузера и не теряя строку запроса каждый раз. Нажатие на Отладку автоматически присоединяет VS к IIS для отладки, что означает, что больше не нужно вручную подключать отладчик к w3wp, что меня раздражало целую вечность. Отлично!
Для справки, VS динамически меняет мой web.config на это:
<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
<environmentVariables />
Но я бы не стал жестко кодировать это в web.config, просто позволил VS управлять этим. :)
Ответ 13
Для меня через некоторое время я понял, что проблема связана с одним из свойств в
appsettings.json
файл.
У меня есть свойство с именем Version. Формат такой:
"Version": "1.0.6",
На сервере наша служба поддержки не рассматривала этот формат и это было так:
"Version": 1.0.6,
и IIS столкнулся с ошибкой 502,5.
Я видел журнал событий приложений, и он мне помог.
Ответ 14
Когда у команды, над которой я работал, возникла эта проблема, кто-то просто собрал проект с Visual Studio и заархивировал папку bin.
Вам нужно запустить команду dotnet publish, чтобы задачи msbuild правильно создавали ваш файл web.config. Он должен заменить переменные% LAUNCHER_PATH% "и"% LAUNCHER_ARGS%.
Ответ 15
Я столкнулся с той же проблемой, и ничего из этой темы не получилось для меня. Поэтому я заглянул в Windows Event Viewer и обнаружил, что у пользователя не было достаточных разрешений для создания/изменения базы данных, поскольку я использовал переносы базы данных EF core. Исправление авторизации решило эту проблему.
Поэтому я бы посоветовал просмотреть события вашего приложения, и, надеюсь, вы получите основную причину вашей ошибки.