Как запустить приложение на .NET Core

.NET Core — это кроссплатформенное ПО от Microsoft для разработки приложений разных типов:

  • мобильных и классических,
  • веб-приложений,
  • служб Windows,
  • консольных программ,
  • веб-API,
  • микрослужб и т.д.

Чтобы настроить .NET Core, нужно использовать Windows-хостинг. Обратите внимание: .NET Core не поддерживается на хостинге Linux.

Как настроить хостинг перед запуском приложения

Перед запуском приложения внесите настройки в конфигурационный файл web.config: выберите режим и укажите данные приложения.

Содержимое конфигурационного файла зависит от системных требований приложения. Существует два режима запуска:

  • зависимый от среды — включает в себя само приложение и его зависимости;
  • автономный — помимо приложения и зависимостей содержит среду выполнения и библиотеки .NET.

Конфигурационный файл должен иметь структуру, как в примерах ниже. Вам остается заполнить данные приложения в секции handlers.

  • режим, зависимый от среды:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
  • автономный режим:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

Как исправить ошибку запуска

После выхода модуля AspNetCoreModuleV2 появилось ограничение: на один пул приложений поддерживается только одно приложение (подробнее на сайте Microsoft). Если ограничение не соблюдается, при запуске .NET Core можно столкнуться с ошибкой:

HTTP Error 500.0 — ANCM In-Process Handler Load Failure

Существует три способа решения. Выберите подходящий вам способ:

 
Изменить версию модуля

В web.config в блоке handlers хранится версия модуля AspNetCoreModuleV2:

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

Замените текст блока на следующий. В нём указана версия AspNetCoreModule:

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

 
Добавить трансформацию

Откройте файл приложения в VisualStudio. Затем в блоке PropertyGroup добавьте строки:

AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

Пример блока:

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

 
Добавить трансформацию для работы модуля вне процесса

Откройте файл приложения в VisualStudio. Затем в блоке PropertyGroup добавьте строку:

AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

Пример блока:

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

Как включить логи приложения

Чтобы включить логи:

1. Перейдите в панель управления хостингом и откройте корневой каталог приложения.

2. В конфигурационном файле web.config укажите статус true для следующей строки:

stdoutLogEnabled=«true»

Затем сохраните изменения.

Если вы не нашли ответ, спросите у нас!
Написать в поддержку