Ошибка HTTP 500.30 - ошибка при запуске ANCM

Я экспериментировал с новой функцией, которая поставляется с .net core sdk 2.2, которая предположительно должна повысить производительность примерно на 400%.

Впечатляет, поэтому я попробовал это на своем проекте ABP (ASP.NET Boilerplate)

Template asp.net core mvc 4.0.2.0

Я добавил следующее в свой файл web.mv.cproj

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
  </ItemGroup>

К сожалению, я не думаю, что эта версия платформы ABP совместима, так как проект просто не запускается и выдает: (в конце концов)

Ошибка HTTP 500.30 - ошибка при запуске ANCM

Я проверил журналы после установки stdoutLogEnabled="true" в web.config и повторной попытки - но без записей.

У кого-нибудь был какой-либо успех в работе текущего ABP с ядром asp.net при настройке процесса?

Я думаю, это может быть доступно только в ABP vNext.

Ответы

Ответ 1

Попробуйте изменить раздел в csproj

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

к следующему...

 <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
 </PropertyGroup>

https://github.com/dotnet/core/blob/master/release-notes/2.2/2.2-known-issues.md

Ответ 2

Если вы используете Visual Studio и у вас запущены какие-либо экземпляры, закройте их все.

Вы должны найти подпапку .vs, где ваш Решение Visual Studio (файл .sln) находится.
Удалите папку .vs и попробуйте снова с моделью внутрипроцессного хостинга.

Ответ 3

В моем случае я недавно изменил строку подключения к базе данных в моем файле appstettings.json. Без регистрации или перехвата ошибок я подозреваю, что эта ошибка завершилась и вызвала ошибку "Ошибка HTTP 500.30 - Ошибка запуска процесса ANCM".

Я случайно заметил обмен между x-freestyler и Tahir Khalid, когда Tahir предложил проблему с IOC при запуске. Так как мой запуск не изменился недавно, но мой appstettings.json изменился - я определил, что причиной проблемы была строка подключения в моем appstettings.json. Я исправил неверную строку подключения, и проблема была решена. Спасибо всему сообществу.

Ответ 4

Удаление строки AspNetCoreHostingModel в файле .cproj сработало для меня. В другом моем проекте не было такой линии, которая бы работала нормально.

<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

Ответ 6

ASP.NET Core 2.2 или более поздней версии. Для 64-разрядного (x64) автономного развертывания, использующего модель внутрипроцессного хостинга, отключите пул приложений для 32-разрядных (x86) процессов.

На боковой панели "Действия" IIS Manager> Пулы приложений выберите "Установить значения по умолчанию для пула приложений" или "Дополнительные параметры". Найдите "Включить 32-битные приложения" и установите значение "Ложь".

Источник: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site.

Ответ 7

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

Я также запускаю .netcore 2.2 и получаю то же сообщение об ошибке, поэтому я изменил файл проекта с InProcess на OutOfProcess, как в выбранном ответе. После этого я нашел реальную причину моей проблемы, когда получил "Не удается создать экземпляр типа реализации": причина этого была для меня:

services.AddScoped<IMyService, IMyService>();

вместо

services.AddScoped<IMyService, MyService>();

Связанный пост: Почему я получаю ошибку "Не удается создать экземпляр типа реализации" для моего универсального сервиса?

Ответ 8

В любом случае это была просто опечатка, которая портит и предотвращает разбор файла настроек JSON

Ответ 9

Эта настройка профиля публикации исправлена для меня:

Настроить профиль публикации → Настройки → Параметры расширений сайта ->

  • [x] Установите расширение основного сайта ASP.NET.

Ответ 10

сначала вы открываете cmd и запускаете команду "dotnet run", затем вы получаете реальную ошибку.

Ответ 11

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

Шаг 1. Создание веб-сайта в IIS

Шаг 2. Убедитесь, что в AppPool для веб-сайта для версии .Net CLR установлено значение "Нет управляемого кода", а для свойства "Включить 32-разрядные приложения" в AppPool → Расширенные настройки установлено значение false

Шаг 3. Убедитесь, что ваш проект ссылается на .Net core 2.2

Шаг 4. Добавьте следующую строку в файл startup.cs внутри метода ConfigureServices

services.Configure<IISServerOptions>(options =>
{
     options.AutomaticAuthentication = false;
});

Шаг 6. Добавьте следующие пакеты Nuget

Microsoft.AspNetCore.App v2.2.5 or greater

Microsoft.AspNetCore.Server.IIS v2.2.2 or greater

Шаг 7. Добавьте следующую строку в ваш файл .csproj

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

Шаг 8. Создайте и опубликуйте свой код (предпочтительно x64 bitness)

Шаг 9. Убедитесь, что вы добавили имя хоста своего сайта в файл etc/hosts

Шаг 10. Перезапустите службу публикации в World Wide Web

Теперь протестируйте ваше основное приложение asp.net, и оно должно быть размещено на хостинге InProcess. Чтобы проверить, размещено ли ваше приложение в режиме InProcess, проверьте заголовки ответа, и они должны содержать следующую строку

Сервер: Microsoft-IIS/10.0 (версия IIS может быть любой в вашей системе)

Обновление: загрузите и установите базовый пакет хостинга ASP.Net, необходимый для его работы

Ответ 12

Если вы обнаружите эту проблему в размещенной службе приложений Azure, скорее всего, проблема связана с хранилищем ключей Azure, попробуйте следующее:

Служба приложений Убедитесь, что идентификация включена

Key Vault Добавьте службу приложений в Key Vault как доверенную в соответствии с политиками доступа.

Ответ 14

Потому что приложение вылетает. Для кого экономия времени на этом исключении!

И код ошибки говорит, что выдает исключение, потому что он не может найти файл на начальном этапе. Смотрите раздел Настройки среды. В моем сценарии это сработало, когда я изменил следующий код

var environment = whb.GetSetting("environment");

в

var environment = "Development";// whb.GetSetting("environment");

Потому что у меня есть appsettings.development.json, но у меня не было appsettings.production.json. Почему он не может найти файл, потому что он ищет другую вещь в нужном месте.

Ответ 15

С .Net Core 2.2 вы сможете использовать модель хостинга InProcess, поскольку она, естественно, быстрее: все обрабатывается в IIS, без дополнительного HTTP-перехода между IIS и сервером Kestrel вашего приложения. Одна вещь, которую вы можете сделать, это добавить этот тег: AspNetCoreModuleV2 Обратите внимание на новый AspNetCoreModuleV2 по сравнению с более старым вариантом AspNetCoreModule. Еще одна важная вещь - изучить журнал событий приложений Windows, чтобы определить виновника. Хотя сообщения об ошибках могут быть загадочными, иногда они указывают на точные номера строк в коде, вызвавшем сбой. Кроме того, в случае, если вы используете CI/CD с TFS, в файле appsettings.json могут быть переменные окружения, которые не были должным образом заменены их назначенными значениями, и это было для меня одним из источников исключений.