После запуска приложения (посредством команды dotnet run
или dotnet watch run
) выберите пункт меню Debug►Attach to Process (Отладкам►Присоединиться к процессу) в Visual Studio. В открывшемся диалоговом окне Attach to Process (Присоединение к процессу) отыщите процесс по имени вашего приложения (рис. 29.4).
После присоединения к выполняющемуся процессу вы можете устанавливать в Visual Studio точки останова, и отладка будет работать так, как ожидалось. Редактировать и продолжать выполнение не удастся; чтобы изменения отразились в функционирующем приложении, придется отсоединиться от процесса.
Присоединение с помощью Visual Studio Code
После запуска приложения (командой dotnet run
или dotnet watch run
) щелкните на кнопке запуска с зеленой стрелкой и выберите .NET Core Attach (Присоединение .NET Core) вместо .NET Core Launch (web) (Запуск .NET Core (веб)), как показано на рис. 29.5.
Когда вы щелкнете на кнопке запуска, вам будет предложено выбрать процесс для присоединения к нему. Выберите свое приложение. Затем можете устанавливать точки останова обычным образом.
Преимущество использования среды VS Code заключается в том, что после ее присоединения (и применения команды dotnet watch run
) вы можете обновлять свой код во время выполнения (без необходимости в отсоединении) и вносимые изменения будут отражаться в функционирующем приложении.
Обновление портов AutoLot.Api
Вы могли заметить, что приложения AutoLot.Api
и AutoLot.Mvc
имеют разные порты, указанные для их профилей IIS Express, но для обоих приложений порты Kestrel установлены в 5000 (HTTP) и 5001 (HTTPS), что вызовет проблемы, когда вы попытаетесь запустить приложения вместе. Измените порты для AutoLot.Api
на 5020 (HTTP) и 5021 (HTTPS), например:
"AutoLot.Api": {
"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