"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"applicationUrl": "https://localhost:5021;http://localhost:5020",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
Создание и конфигурирование экземпляра WebHost
В отличие от классических приложений ASP.NET MVC или ASP.NET Web API приложения ASP.NET Core — это просто консольные приложения .NET Core, которые создают и конфигурируют экземпляр WebHost
. Создание экземпляра WebHost
и его последующее конфигурирование обеспечивают настройку приложения на прослушивание (и реагирование) на запросы HTTP. Экземпляр WebHost
создается в методе Main
внутри файла Program.cs
. Затем экземпляр WebHost
конфигурируется для вашего приложения в файле Startup.cs
.
Файл Program.cs
Откройте файл класса Program.cs
в приложении AutoLot.Api
и просмотрите его содержимое, которое для справки приведено ниже:
namespace AutoLot.Api
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build.Run;
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup
});
}
}
Метод CreateDefaultBuilder
ужимает наиболее типовую настройку приложения в один вызов. Он конфигурирует приложение (используя переменные среды и JSON-файлы appsettings
), настраивает стандартный поставщик ведения журнала и устанавливает контейнер DI. Такая настройка обеспечивается шаблонами ASP.NET Core для приложений API и MVC.
Следующий метод, ConfigureWebHostDefaults
, тоже является мета-методом, который добавляет поддержку для Kestrel, IIS и дополнительные настройки. Финальный шаг представляет собой установку класса конфигурации, специфичной для приложения, который в данном примере (и по соглашению) называется Startup
. Наконец, вызывается метод Run
для активизации экземпляра WebHost
.
Помимо экземпляра WebHost
в предыдущем коде создается экземпляр реализации IConfiguration
, который добавляется внутрь контейнера DI.
Файл Startup.cs
Класс Startup
конфигурирует то, как приложение будет обрабатывать запросы и ответы HTTP, настраивает необходимые службы и добавляет службы в контейнер DI. Имя класса может быть любым, если оно соответствует строке UseStartup
в конфигурации метода CreateHostBuilder
, но по соглашению класс именуется как Startup
.
Доступные службы для класса Startup
Процессу запуска требуется доступ к инфраструктуре, а также к службам и настройкам среды, которые внедряются в класс инфраструктурой. Классу Startup
доступно пять служб для конфигурирования приложения, которые кратко описаны в табл. 29.11.
Конструктор принимает экземпляр реализации IConfiguration
и необязательный экземпляр реализации IWebHostEnvironment/IHostEnvironment
. Метод ConfigureServices
запускается до того, как метод Configure
получает экземпляр реализации IServiceCollection
. Метод Configure
должен принимать экземпляр реализации IApplicationBuilder
, но может принимать экземпляры реализаций IWebHostEnvironment/IHostEnvironment
, ILoggerFactory
и любых интерфейсов, которые были добавлены внутрь контейнера DI в методе ConfigureServices
. Все перечисленные компоненты обсуждаются в последующих разделах.
Конструктор
Конструктор принимает экземпляр реализации интерфейса IConfiguration
, который был создан методом Host.CreateDefaultBuilder
в файле класса Program.cs
, и присваивает его свойству Configuration
для использования где-то в другом месте внутри класса. Конструктор также может принимать экземпляр реализации IWebHostEnvironment
и/или ILoggerFactory
, хотя он не добавляется в стандартном шаблоне.
Добавьте в конструктор параметр для IWebHostEnvironment
и присвойте его локальной переменной уровня класса. Это понадобится в методе ConfigureServices
. Проделайте такую же работу для приложений AutoLot.Api
и AutoLot.Mvc
.
private readonly IWebHostEnvironment _env;
public Startup(
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT