ASP.NET Core 1.0 на IIS ошибка 502.5

Я только что обновил свой сервер (Windows 2012R2) до .Net Core 1.0 RTM пакет хостинга Windows из предыдущего .Net Core 1.0 RC2. Мое приложение работает на мой компьютер без каких-либо проблем, но сервер продолжает показывать:

HTTP Error 502.5 - Process Failure


Common causes of this issue:

The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port

ранее он работал с версией RC2. Не знаю, что может пойти не так.

Это все Средство просмотра событий говорит:

Failed to start process with the commandline 'dotnet .MyWebApp.dll'. Error code = '0x80004005'.

хуже всего то, что журналы приложений являются пусто! Я имею в виду эти stdout_xxxxxxxxx.файлы журнала полностью пусты и все они имеют размер 0 байт.

что делать?? Как я могу узнать причину ошибки, если она не зарегистрирована??

25 ответов


Я смог исправить это, запустив

"C:\Program файлы\dotnet\dotnet.exe "" C:\fullpath\PROJECT - ... DLL-файл"

в командной строке, что дало мне гораздо более значимую ошибку:

"указанный фреймворк" Microsoft.NETCore.App', версия '1.0.1' был не найдено. - Проверьте зависимости приложений и целевой версии framework, установленной на: C:\Program файлы\dotnet\общие\Microsoft.NETCore.Приложение - Этот установлены следующие версии : 1.0.0 - Кроме того, установите версию фреймворка '1.0.1'.

Как вы можете видеть, у меня была неправильная версия NET Core, установленная на моем сервере. Я смог запустить приложение после удаления предыдущей версии 1.0.0 и установки правильной версии 1.0.1.


у меня была такая же проблема, в моем случае это было недостаточное разрешение идентификатора пользователя моего пула приложений, on публикация в IIS страница asp.net док, есть несколько причин, перечисленных для этой ошибки:

  • если вы опубликовали автономное приложение, убедитесь, что вы не установили платформу в buildOptions of project.json это противоречит публикации RID. Например, не указывайте платформу x86 и публикуйте с избавлением от win81-x64 (dotnet publish -c Release -r win81-x64). Проект будет публиковаться без предупреждения или ошибки, но не с вышеуказанными зарегистрированными исключениями на сервере.
  • Регистрация на <aspNetCore> элемент в web.config, чтобы подтвердить, что это dotnet для портативного приложения или .\мое приложение.exe для автономного приложения.
  • для портативного приложения,dotnet.exe может быть недоступен через настройки пути. Подтвердите это C:\Program Files\dotnet\ существует в системном пути настройки.
  • для портативного приложения,dotnet.exe может быть недоступен для удостоверения пользователя пула приложений. Убедитесь, что идентификатор пользователя AppPool имеет доступ к

Я получил эту работу с жестким сбросом IIS (я только что установил пакет хостинга).

оказывается, что просто нажать "перезапустить" в диспетчере IIS недостаточно. Мне просто нужно было открыть командную строку и ввести "iisreset"


Итак, я получил новый сервер, на этот раз это Windows 2008R2, и мое приложение работает нормально.

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

Итак, потому что я ранее скомпилировал приложение без любая платформа в виду, что она дала мне dll версия, которая работает только если у цели есть .Net Core Windows Hosting пакет установлен. В моем случае это было установлен, и это было прекрасно.

после того как приложение не работает Я решил скомпилировать его как консольное приложение с win7-x64 как во время выполнения. На этот раз в тот момент, когда я запустил exe моего приложения на сервере, он разбился с ошибкой о отсутствующей dll:

The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing

эта dll из универсальной среды выполнения C, которая включена в Visual C++ распространяемый для Visual Studio 2015.

Я попытался установить этот пакет (как x64, так и x86), но он не удался каждый раз (не знаю почему) на Windows Server 2012 R2.

но когда я пытался установить их на новом сервере, Windows Server 2008 R2, они успешно установлены. Возможно, это и было причиной, но все еще не могу сказать наверняка.


У меня была такая же проблема при публикации веб-приложения. Если у кого-то еще есть эта проблема, исправьте ее, изменив {AppName}.runtimeconfig.в JSON

    {
  "runtimeOptions": {
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "1.1.2"
    },
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

изменить версию "версия": "1.1.2" to "версия": "1.1.1" и все работало нормально


У меня была та же проблема.

чтобы узнать точный источник, я включил вход в систему сеть.конфигурационный файл:

<aspNetCore processPath="dotnet" arguments=".\MyWebService.dll" stdoutLogEnabled="**true**" stdoutLogFile=".\logs\stdout" />

и создал подпапку журналов в корневой папке MyWebService.

после перезапуска IIS и попытки выполнить API я получил ошибку, и она отсутствовала в правильной основной среде выполнения. После загрузки установки DotNetCore.1.0.5_1.1.2-WindowsHosting ошибка исчезла.


была такая же проблема и все решения не работают. Нашел этот камень и подумал, что я передам, если он поможет кому-то еще. Установите на сервере 2012 R2 получение DLL отсутствует ошибка, попробуйте переустановить VS C++ 2015 и получить ошибку. Исправить это сделать следующее:

Кажется файла C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu возникли проблемы с установкой. Откройте командную строку администратора do:

c:
mkdir tmp
mkdir tmp\tmp
move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp
expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp
dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab

Примечание: замените "...- с правильным именем папки. После этого переустановите VS C++ 2015 пакет.


Я получил эту проблему на своем рабочем сервере после того, как мой проект VS был автоматически обновлен до .NET Core 1.1.2.

Я просто установил 1.1.2 .net core runtime отсюда на моем рабочем сервере:https://www.microsoft.com/net/download/core#/runtime


решить Я только что пробежал через ту же проблему сегодня при развертывании в AZURE. Затем я попробовал то же самое для локальных IIS, получил ту же проблему. Поскольку я новичок в .net CORE, боролся за несколько часов, прежде чем я действительно решил его.

в нашем решении после публикации в IIS я наблюдал за своей сетью.файл confile, особенно под строкой <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

в нашей папке развертывания сгенерированный web.конфигурация выглядит так:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

теперь, пожалуйста, попробуйте изменение вышеуказанной конфигурации в решении visual studio на<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

в нашей новой папке развертывания сгенерированный web.конфигурация выглядит так:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

и это решило мою проблему, надеюсь, это поможет.


У меня была та же проблема, когда я обновил свою машину dev до Core 1.0.1, но забыл обновить сервер.


У меня была аналогичная проблема, и процитировать Шерлока Холмса: ""

Я проверил, установлен ли на сервере .NET framework, на который я нацеливался, и оказалось, что это не так. Я установил 4.6.2 .NET Framework, и он работал.


У меня была такая же проблема . Я изменил идентификатор пула приложений на учетную запись сетевой службы . Затем я явно установил путь к dotnet.exe в интернете.config для приложения, чтобы работать должным образом, как @danielyewright сказал в его github комментарий . Он работает после установки пути.

спасибо


поделиться, что в моем случае эта ошибка была потому что я забыл обновить .в JSON С:

"buildOptions": {
    "emitEntryPoint": true
  }

У меня была та же ошибка в вопросе, с теми же проблемами, как описано VSG24 в предлагаемом ответе-неприятное сообщение об ошибке при вводе "dotnet" в CMD:

программа не может запуститься, потому что api-ms-win-crt-runtime-l1-1-0.dll отсутствует

Я решил это, вручную установив следующие 2 обновления на Windows Server 2012 R2 (и предварительные условия и все другие связанные обновления-внимательно прочитайте инструкции по установке на веб-сайте Microsoft):

  1. KB2919355
  2. KB2999226

надеюсь, это кому-то поможет.


я столкнулся с той же проблемой, когда пытался опубликовать отладочную версию моего веб-приложения. Этот набор файлов не содержал файл web.config С правильным значением атрибута processPath.

Я взял этот файл из версии выпуска, значение было присвоено пути к моему exe-файлу.

<aspNetCore processPath=".\My.Web.App.exe" ... />

в моем случае была проблема с версией Net Core, установленной на сервере. Я просто устанавливаю ту же версию, что и на моей машине разработки, и все в порядке: -)


Я получал HTTP-ошибку 502.5 при попытке опубликовать мой .NET Core 2.0 API в AWS EB и решил ее, добавив следующий код .csproj файл:

  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>

Мне нужно было установить последнюю версию .net Coreздесь. Нет необходимости перезагружать сайт или сервер


Я решил это, добавив "edit permission" в приложение сайта, сопоставленное с физическим каталогом, а затем выбрал пользователя windows, который может иметь доступ к этой корневой папке. (частная сеть.)


в моем случае, после установки AspNetCore.2.0.6.RuntimePackageStore_x64.exe и DotNetCore.2.0.6-WindowsHosting.exe , Я хочу перезагрузка сервера чтобы он работал без 502 плохой шлюз и прокси-ошибка.

обновление:

есть способ использовать его без перезагрузки: https://stackoverflow.com/a/50808634/3634867


у меня была эта проблема (ошибка произошла как на VS 15, так и на 17). Однако на VS15 он вернулся CONNECTION_REFUSED ошибка и на VS17 он вернулся ASP.NET Core 1.0 on IIS error 502.5.

исправить

  1. перейдите в папку проекта и найдите скрытую папку .vs (он находится в папке проектов dir). (Не забудьте показать скрытые файлы / папки)

  2. закрыть VS

  3. удалить .vs-папка
  4. начать Против, как админ (.vs-папка будет воссоздана VS)

вот что я понял, и это произошло недавно на Windows 10 после установки обновления. Из того, что я собрал, было установлено обновление Защитника Windows, которое предполагало мой "проект.dll " (an asp.net core project) вел себя как вирус, поэтому он был удален.

Итак, одна из первых вещей, которые я предлагаю вам сделать, прежде чем начать установку/удаление материалов, - это проверить подтвердите ваш проект".dll " там, где это должно быть.

скопируйте его обратно в местоположение, если его больше нет.

Если вы возникли трудности с копированием файла обратно добавить исключение в папку проекта в Защитнике windows. ( узнайте, как это сделать здесь. )

Это сработало для меня мгновенно, и я повторил его через несколько серверов приложений.


для меня это было то, что connectionString в запуске.cs был равен нулю в:

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

и это было null, потому что приложение не просматривало appsettings.json для строки подключения.

пришлось изменить программу.cs to:

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((context, builder) => builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
     .AddJsonFile("appsettings.json").Build())
     .UseStartup<Startup>().Build();

Я понятия не имею, почему это сработало для меня, но я использую аутентификацию Windows, и у меня был этот бит кода на моем BuildWebHost на Program.cs:

.UseStartup<Startup>()
.UseHttpSys(options =>
{
    options.Authentication.Schemes =
        AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
    options.Authentication.AllowAnonymous = false;
})
.Build();

после удаления .UserHttpSys бит, теперь он работает, и я все еще могу аутентифицироваться как пользователь домена.

BuildWebHost сейчас выглядит так:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .Build();

Я получал ту же ошибку и обнаружил, что проблема заключалась в том, что во время публикации в Azure мой web.config файл был изменен, так что эта следующая строка закончилась так:

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />

проблема для производства содержание аргументов: "-argFile IISExeLauncherArgs.txt"

похоже, что эта проблема будет решена в следующем .NET Core SDK (в настоящее время в предварительном просмотре), но на данный момент обходной путь чтобы добавить этот блок .файл csproj:

<Target Name="bug_242_workaround" AfterTargets="_TransformWebConfig">
    <Exec Command="powershell &quot;(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'&quot;" />
  </Target>

это изменит сеть.настройте и удалите проблемную часть для публикации.

ссылка:https://github.com/aspnet/websdk/issues/242

надеюсь, что это помогает.