Ошибка 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>
Ответ 5
Мой из-за UseKestrel() в program.cs Это должно быть .ConfigureKestrel() в 2.2
больше информации на https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs=visual-studio&WT.mc_id=-blog-scottha#update-kestrel -конфигурация
Ответ 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 как доверенную в соответствии с политиками доступа.
Ответ 13
Для меня это было неправильно введено DBContext в HostedService. Я переписал это в соответствии с этим:
Как мне вставить экземпляр DbContext в IHostedService?
и все работало нормально!
Ответ 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 могут быть переменные окружения, которые не были должным образом заменены их назначенными значениями, и это было для меня одним из источников исключений.