Использование .netcore 2.2 и использование хостинговой модели In Process - PullRequest
0 голосов
/ 17 декабря 2018

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

Впечатляет, поэтому я опробовал ее на своем проекте ABP

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 при настройке процесса?

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

Ответы [ 13 ]

0 голосов
/ 02 августа 2019

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

0 голосов
/ 29 августа 2019

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

0 голосов
/ 27 июля 2019

Для меня это было неправильно введено DBContext в HostedService.Я переписал его в соответствии с этим:

Как мне вставить экземпляр DbContext в IHostedService?

и все работало нормально!

0 голосов
/ 01 августа 2019

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

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

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

на

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

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

0 голосов
/ 05 июля 2019

Потратив целый день на борьбу с самим собой, решив разместить свое основное приложение 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.Appv2.2.5 или выше

Microsoft.AspNetCore.Server.IIS v2.2.2 или выше

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

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

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

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

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

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

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

0 голосов
/ 10 июля 2019

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

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

services.AddScoped<IMyService, IMyService>();

вместо

services.AddScoped<IMyService, MyService>();

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

0 голосов
/ 15 апреля 2019

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

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

0 голосов
/ 26 июня 2019

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

0 голосов
/ 03 апреля 2019

Мой из-за 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-configuration

0 голосов
/ 18 марта 2019

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

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