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

Я подтвердил, что переключение на ложное воссоздание ошибки и возвращение к истинному разрешило ее.

Ответ 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. Исправление авторизации решило эту проблему.

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