Помилка HTTP 500.30 - Помилка запуску ANCM в процесі


115

Я експериментував з новою функцією, яка поставляється з .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.


перевірити, чи є загальнодоступна функція, яка не має атрибута POST. Зробіть приватним
Мохан

Відповіді:


133

В ASP.NET Core 2.2 випущено новий шаблон сервера / хостингу з IIS, який називається IIS InProcess hosting . Щоб увімкнути хостинговий процес, додано елемент csproj AspNetCoreHostingModel, який встановлює для hostingModel значення inprocess у файлі web.config. Крім того, web.config вказує на новий модуль під назвою AspNetCoreModuleV2, який необхідний для хостингу в процесі.

Якщо цільова машина, на якій ви розгортаєтесь, не має ANCMV2, ви не можете використовувати хостинг IIS InProcess. Якщо так, правильною поведінкою є або встановити пакет хостингу dotnet на цільову машину, або перейти до AspNetCoreModule.

Джерело: jkotalik (Github)

Спробуйте змінити розділ у csproj (редагувати за допомогою текстового редактора)

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

до наступного ...

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

Джерело (Github)


1
Я використав вашу пропозицію, але змінив її на, InProcessі вона, здається, працює нормально. Дякую!
Язб,

4
10-кратний рятівник життя
Валентин Петков

2
Мені також довелося змінити InProcess на OutOfProcess, розміщений у web.config
Mateusz Migała

1
Я хотів би зазначити, що включення AspNetCoreModuleрозривів виводу налагодження на VS2017. https://github.com/aspnet/AspNetCore/issues/6609
Ерік

1
Це принципово змінює спосіб роботи сайту на IIS tho?
hanzolo

50

З ASP.NET Core 3.0+ та Visual Studio 19 версії 16.3+ Ви знайдете розділ у файлі .csproj проекту, як показано нижче -

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

Там немає властивості AspNetCoreHostingModel. Вибір моделі хостингу ви знайдете у властивостях проекту. Клацніть правою кнопкою миші на назві проекту у провіднику рішень. Клацніть властивості.

введіть тут опис зображення

Клацніть меню Налагодження.

введіть тут опис зображення

введіть тут опис зображення

Прокрутіть униз, щоб знайти параметр Модель хостингу.

введіть тут опис зображення

Виберіть Поза процесом.

введіть тут опис зображення

Збережіть проект і запустіть IIS Express.

ОНОВЛЕННЯ для розгортання сервера:

Коли ви публікуєте свою програму на сервері, існує веб-файл конфігурації, як показано нижче:

введіть тут опис зображення

змінити значення 'hostingModel' з 'inprocess' на 'outofprocess', як показано нижче:

введіть тут опис зображення


Після публікації в службі я змінюю значення 'hostingModel' з 'inprocess' на 'outofprocess', як ви сказали, але зараз я отримую цю помилку: Помилка HTTP 502.5 - Помилка запуску ANCM поза процесом
waki68

Це нормально перед зміною його значення?
Mohammad Sadiqur Rahman

Ні, це не нормально, але це вирішено шляхом встановлення Hosting Bundle
waki68,

Як можна це зробити, якщо немає файлу web.config
MyDaftQuestions

@MohammadSadiqurRahman це у мене спрацювало. але зміна outofprocess на OutOfProcess може допомогти. Дякую, що врятували мій день :)
M Hanif

22

У моєму випадку я нещодавно змінив рядок підключення до бази даних у своєму файлі appstettings.json. Без реєстрації або виявлення помилок на місці, я підозрюю, що ця помилка завершилася, що спричинило помилку "Помилка HTTP 500.30 - Помилка запуску ANCM в процесі".

Я випадково помітив обмін між x-freestyler та Тахіром Халідом, де Тахір запропонував проблему МОК при запуску. Оскільки мій запуск нещодавно не змінився, але мій appstettings.json - я визначив, що причиною проблеми був рядок підключення в моєму appstettings.json. Я виправив неправильний рядок підключення, і проблема була вирішена. Дякую всій громаді.


4
Дякую, що поділились. Я перевірив свій appsettings.json і виявив помилковий тип. Це вирішило проблему.
heringer

Аналогічно; Я отримав повідомлення "Помилка HTTP 500.30 - Помилка запуску ANCM у процесі", коли у моєму файлі appsettings.json бракувало '{'
JTech,

Дякую, у моєму appsettings.json у рядку підключення я пропустив "\" за допомогою "\\" у локальному рядку підключення sqlexpress. Отже, перед виправленням у мене є "Server = machine01 \ SQLEXPRESS; xxxx", а тепер із "Server = machine01 \\ SQLEXPRESS; xxxx" він працює ідеально!
bau

Чесно кажучи, я не помітив моєї проблеми, поки не розглянув систему, Event Logsяка вказує на неправильно сформований параметр JSON.
vandsh

Подібно до того, що відчував @heringer, у мене в рядку підключення був недійсний символ. Видалення вирішило проблему.
Олександр Сантос

12

Якщо ви використовуєте Visual Studio і у вас запущені будь-які екземпляри, закрийте їх усі.

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


10

ASP.NET Core 2.2 або пізнішої версії: Для 64-розрядного (x64) автономного розгортання, яке використовує модель хосту в процесі, вимкніть пул програм для 32-розрядних (x86) процесів.

На бічній панелі Дії Менеджера IIS> Пули програм виберіть Встановити за замовчуванням пул програм або Додаткові параметри. Знайдіть Enable 32-bit Applications і встановіть значення False.

Джерело: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site


1
Ця зміна виправила мої проблеми з переходом з ASP.NET Core 3.0 на 3.1
SteveC

Ядро Dotnet 3.1: Я змінив SelfContain на false у своєму pubxml і отримав помилку. Це виправило це.
Ендрю Ковенговен,

6

Я отримав таку саму помилку на моїй розробницькій машині під управлінням Windows 10. Помилка не зникла після того, як я встановив пакет основного хостингу dotnet. Мені довелося зайти до програми перегляду подій, щоб отримати детальну помилку. Ваша основна проблема (якщо така є) може відрізнятися від моєї. Справа в тому, що якщо ви працюєте на машині Windows, програма перегляду подій надає деталі. Сподіваюся, це комусь допомагає.

програма перегляду подій надала деталі помилок


5

Я подивився журнали Windows у розділі Додаток. Він відображав повідомлення про помилку та трасування стека. Я з’ясував, що мені не вистачає папки, що називається node_modules. Я створив цю папку і виправив її.

Я не вносив жодних змін у файл web.config чи файл проекту. Моя версія .NETCoreApp була 3.1


+1 за пошук у журналах Windows, щоб знайти детальне повідомлення про помилку - це допомогло мені дуже швидко це виправити - дякую!
tristankoffee

4

Можливо, це була просто помилка, яка пошкоджує та запобігає аналізу файлу налаштувань JSON


І як це було можливо?
tnk479

3

Видалення рядка AspNetCoreHostingModel у файлі .cproj у мене спрацювало. Не було такої лінії в іншому моєму проекті, який працював би нормально.

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

2
Мені не подобається видаляти речі для вирішення проблеми, оскільки це маскує фактичну проблему, але дякую x-freestyler за цей пост, оскільки, видаливши цей рядок, він викрив основну проблему, пов’язану з помилкою запуску IoC для одного залежності не реєструються!
Тахір Халід,

3

У мене була подібна проблема при спробі перейти з хостингу OutOfProcess на хостинг InProcess у проекті .Net Core, який я нещодавно оновив з 2.0 до 3.0.

Не маючи справжньої корисної помилки, і, витративши дні, намагаючись вирішити цю проблему, я врешті-решт знайшов виправлення для моєї справи, яким, як я думав, поділився б у випадку, якщо це корисно для когось іншого, хто бореться з цим.

Для мене це було викликано декількома пакетами Microsoft.AspNetCore .

Після видалення всіх посилань на пакети Microsoft.AspNetCore, які мали версію менше 3.0.0 (оновлення не було доступне> = 3.0.0 для них), ця помилка більше не виникала.

Це були пакунки, які я вилучив;

<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="2.2.1" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />

Усі інші пакети Microsoft.AspNetCore з версією, що перевищує або дорівнює 3.0.0, працювали нормально.



2

Це налаштування профілю публікації виправлено для мене:

Налаштуйте профіль публікації -> Налаштування -> Параметри розширень сайту ->

  • [x] Встановіть розширення сайту ASP.NET Core.


2

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

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

services.AddScoped<IMyService, IMyService>();

замість

services.AddScoped<IMyService, MyService>();

Пов’язане повідомлення: Чому я отримую помилку "Не вдається створити тип реалізації" для моєї загальної служби?


1
Це теж була моя справа. Дякую.
Феліпе Ромеро,

1

Провівши цілий день, борючись із самим собою, вирішивши розмістити моє основне додаток asp.net на IIS із хостингом InProcess, я нарешті пишаюся і відчуваю полегшення, що це вирішено. Години, коли я неодноразово переглядав ті самі форуми, блоги та запитання, що намагалися вирішити проблему, я все ще застряг, дотримуючись усіх вищезазначених підходів. Тепер я опишу свій досвід її вирішення.

Крок 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 або новішої версії

Microsoft.AspNetCore.Server.IIS v2.2.2 або новішої версії

Крок 7: Додайте наступний рядок у файл .csproj

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

Крок 8: Створіть та опублікуйте свій код (бажано x64 bitness )

Крок 9: Переконайтесь, що ви додали ім’я хосту веб-сайту у файл etc / hosts

Крок 10: Перезапустіть Службу видавництва всесвітньої мережі

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

Сервер: Microsoft-IIS / 10.0 (версія IIS може бути будь-якою залежно від вашої системи)

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


1

Мою проблему вирішено шляхом запуску спеціального пулу програм для AspNetCoreModuleV2

Опис:

HTTP Error 500.34 - ANCM Mixed Hosting Models Not Supported

Я запускав кілька додатків в одному пулі програм. Деякі програми працювали

<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />

Додаток, що спричинив помилку, працював AspNetCoreModuleV2

<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />

Я створив новий пул додатків, присвячений AspNetCoreModuleV2, і це вирішило мою проблему.


1

Я зіткнувся з цією проблемою в службі програм Azure під час оновлення з 2.2 до 3.1. Причиною тому стало розширення "ASP.NET Core 2.2 (x86) Runtime", встановлене в Службі програм. Видалення цього розширення з Kudu вирішило проблему!


1

Ого, є багато відповідей на це питання, але у мене була така сама проблема, і моє рішення відрізнялося від усього, що я читав тут, і також досить просте.

У мене були проблеми з розгортанням мого додатка на блакитний з правильними налаштуваннями середовища, тому я возився з файлом launchsettings.json і змінив значення змінної ASPNETCORE_ENVIRONMENT у профілі IIS з "Розробка" на "Виробництво" . Повернення його до "Розробка" вирішило проблему для мене.

  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }

1

У моєму випадку це було неправильне значення у файлі appsettings.json. Значення було, .\SQLEXPRESSі воно спрацювало після того, як я змінив його на.\\SQLEXPRESS


Мій також був спричинений погано відформатованим файлом appsettings.json!
fosbie


0

Тому що додаток аварійно завершує роботу. Для кого економить час на цьому винятку!

І код помилки каже, що видає виняток, оскільки він не може знайти файл у початковій фазі. Див. Розділ Налаштування навколишнього середовища. У моєму сценарії це спрацювало, коли я змінив наступний код

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

до

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

Оскільки у мене є appsettings.development.json, але у мене не було appsettings.production.json. Чому він не може знайти жодного файлу, оскільки шукає інше в потрібному місці.


0

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


0

У мене сталася помилка у Program.csфайлі. Я намагався зв’язатись із AddAzureKeyVaultдавно видаленим.

Висновок :

This error could come to due to any silly error in the application. Debug step by step your application startup process.

0

У моєму випадку у мене була міграція, яка не вдалася під час запуску в певному середовищі в Azure, але працювала нормально в dev. Оскільки ми налаштували службу на запуск міграцій як частину запуску, фактичний запуск веб-програми не вдається.

Я запустив міграцію вручну в середовищі, щоб виявити проблему, а потім скоригував її для вирішення відмінностей даних у цьому середовищі.

Якщо хтось знає, як я міг побачити помилку міграції без запуску вручну безпосередньо в БД, це було б корисно.


0

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

У ServiceCollection я намагався зареєструвати файл abstract class

services.AddScoped<IMyInterface, MyClasss>();

де MyClassбулоabstract з якоїсь невідомої для мене причини хе-хе :)

Тож хлопці, якщо у вас HTTP Error 500.30 - ANCM In-Process Start Failure просто перегляньтеServiceCollection


0

Для мене все було чудово, але проблема виникла через публікацію в різних версіях VS, дивно !!! (остання версія VS 2019 (16.4.2)). Коли я публікую додаток з VS 2017, він працює нормально.

Актуальне питання в його JSon залежності файлу (наприклад MyWebApp.deps.json) в папці публікації. Сподіваюся, це комусь допомагає.

введіть тут опис зображення


Нещодавно я дізнався, що файл доступний у опублікованій папці. Але повідомлення про помилку в evenLogs вказує на цей файл dep.json і в цьому згаданому шляху до файлу JSON runtimes/win-x64/nativeне впевнений, що це вказує на ту саму папку чи на якийсь шлях
Премчандра Сінгх,

Фактична проблема у мене в evenlog Could not find inprocess request handler. Captured output from invoking hostfxr: Error: An assembly specified in the application dependencies manifest (Cues.Web.deps.json) was not found: package: 'runtime.win-x64.Microsoft.NETCore.App', version: '2.2.8' path: 'runtimes/win-x64/native/mscordaccore_amd64_amd64_4.6.28207.03.dll'
Премчандра Сінгх

0

Подивіться мою попередню відповідь у цій же темі, щоб зрозуміти ціле. Вибачте за кілька відповідей

Після подальшого розслідування проблема сталася через те, що VS 2019 вибирає найновіший патч (поведінка VS за замовчуванням) .net core 2.2, який для мене є 2.2.8 для публікації програми. Ми можемо обмежити це певною версією на вибір, використовуючи

<RuntimeFrameworkVersion>2.2.4</RuntimeFrameworkVersion>

Дивіться тут . Це остаточно вирішило мою проблему, хоча останній патч не застосовується. Я можу будувати з будь-якої VS 2017 або VS 2019, обидві публікують програму для версії середовища виконання .net core 2.2.0

введіть тут опис зображення


0

У мене була та сама помилка, і проблема була в Microsoft.Extension.Primitive версія пакету не сумісна з основною версією .net. І це посилання на один із посилань на проекти з мого проекту.

Одного разу я змінив Microsoft.Extension.Primitive у цьому проекті. Цю проблему вирішено.

У журналах подій Azure перевірте, яку помилку ви отримуєте, і чи пов’язана вона з посиланням на пакет. Спробуйте вищезазначене, що я згадав.

Оскільки пакунки nuget тісно пов'язані з версією .net. Потрібно лише переконатися, що всі пакунки, що посилаються на проект, також повинні бути тісно пов’язані з версією .net.


0

Для мене у мене був складний запуск програми, в якому я створив свій власний WebHostBuilder. Це спрацювало нормально, але не вдалося, коли я спробував режим хостингу InProcess. Я припускаю, що я щось пропустив, зателефонувавши в WebHostBuilder. Тому я переконався, що завжди телефоную WebHost.CreateDefaultBuilder (args), а потім вношу будь-які додаткові зміни - в основному, як це роблять нові шаблони програм.

Або для шаблонів asp core 3.1, які використовують IHostBuilder (не IWebHostBuilder), зателефонуйте ConfigureWebHostDefaults

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                // add stuff here
                webBuilder.UseStartup<Startup>();
            });

0

У моєму випадку не працювало вищезазначене рішення. Але коли я видалив файл myproject.vspscc із Провідника рішень, проблема вирішена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.