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
ofproject.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):
- KB2919355
- 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
.
исправить
перейдите в папку проекта и найдите скрытую папку
.vs
(он находится в папке проектов dir). (Не забудьте показать скрытые файлы / папки)закрыть VS
- удалить .vs-папка
- начать Против, как админ (.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 "(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'"" />
</Target>
это изменит сеть.настройте и удалите проблемную часть для публикации.
ссылка:https://github.com/aspnet/websdk/issues/242
надеюсь, что это помогает.