Как запустить приложение на .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»
Затем сохраните изменения.