Найти тему

Создадим первое приложение на ASP.NET Core

Я буду работать в Visual Studio 19. Для начала работы нам нужны:

Сам ASP.NET и Кроссплатформенная разработка для .NET

-2

Для нашего стартого приложения выберем

-3

Запустив проект получим

-4

В обозревателе решений можем увидеть Иерархию нашего проекта

-5

Давайте разберем класс программ.

-6

В программе по умолчанию в статическом методе CreateHostBuilder как раз создается и настраивается IHostBuilder. Непосредственно создание IHostBuilder производится с помощью метода Host.CreateDefaultBuilder(args).

Данный метод выполняет ряд задач.

  • Устанавливает корневой каталог (для этого используется свойство Directory.GetCurrentDirectory). Корневой каталог представляет папку, где будет производиться поиск различного содержимого, например, представлений.
  • Устанавливает конфигурацию хоста. Для этого загружаются переменные среды с префиксом "DOTNET_" и аргументы командной строки
  • Устанавливает конфигурацию приложения. Для этого загружается содержимое из файлов appsettings.json и appsettings.{Environment}.json, а также переменные среды и аргументы командной строки. Если приложение в статусе разработки, то также используются данные Secret Manager (менеджера секретов), который позволяет сохранить конфиденциальные данные, используемые при разработке.
  • Добавляет провайдеры логирования
  • Если проект в статусе разработки, то также обеспечивает валидацию сервисов

Далее вызывается метод ConfigureWebHostDefaults(). Этот метод призван выполнять конфигурацию параметров хоста, а именно:

  • Загружает конфигурацию из переменных среды с префиксом "ASPNETCORE_"
  • Запускает и настраивает веб-сервер Kestrel, в рамках которого будет разворачиваться приложение
  • Добавляет компонент Host Filtering, который позволяет настраивать адреса для веб-сервера Kestrel
  • Если переменная окружения ASPNETCORE_FORWARDEDHEADERS_ENABLED равна true, добавляет компонент Forwarded Headers, который позволяет считывать из запроса заголовки "X-Forwarded-"
  • Если для работы приложения требуется IIS, то данный метод также обеспечивает интеграцию с IIS

Метод ConfigureWebHostDefaults() в качестве параметра принимает делегат Action<IWebHostBuilder&. А помощью последовательного вызова цепочки методов у объекта IWebHostBuilder производится инициализация веб-сервера для развертывания веб-приложения.

Этим вызовом устанавливается стартовый класс приложения - класс Startup, с которого и будет начинаться обработка входящих запросов.

В методе Main вызывается метод у созданного объекта IHostBuilder вызывается метод Build(), который собственно создает хост - объект IHost, в рамках которого развертывается веб-приложение. Запуск у IHost вызывается метод Run():

CreateHostBuilder(args).Build().Run();

После этого приложение запущено, и веб-сервер начинает прослушивать все входящие HTTP-запросы.

Если возникли вопросы, буду рад обсудить их в комментариях! ;)