После нажатия клавиши <F5> (или щелчка на кнопке запуска с зеленой стрелкой) оба проекта запустятся. При
этом возникает ряд сложностей. Первая сложность — среда Visual Studio запоминает последний профиль, который применялся для запуска приложения. Это значит, что если вы использовали для запуска
AutoLot.Api
веб-сервер IIS Express, то запуск обоих приложений приведет к запуску
AutoLot.Api
с применением IIS Express, поэтому порт в настройках служб окажется некорректным.
Проблему легко устранить. Либо измените порты в файле
appsettings.development.json
, либо запустите приложение под управлением Kestrel, прежде чем конфигурировать совместный запуск приложений.
Вторая сложность связана с синхронизацией. Оба проекта стартуют практически одновременно. Если вы сконфигурировали приложение
AutoLot.Api
на воссоздание базы данных при каждом его запуске, тогда она не будет готова для приложения
AutoLot.Mvc
, когда компонент представления запускается с целью построения меню. Проблему решит быстрое обновление браузера, отображающего
AutoLot.Mvc
(как только вы увидите пользовательский интерфейс Swagger в
AutoLot.Api
).
Использование командной строки
Откройте окно командной строки в каждом каталоге проекта и введите команду
dotnet watch run
. Это позволит управлять порядком и синхронизацией, а также гарантирует, что приложения выполняются с применением Kestrel, но не IIS. Информацию об отладке при запуске из командной строки ищите в главе 29.
Резюме
В настоящей главе вы завершили изучение ASP.NET Core, равно как и построение приложения
AutoLot.Mvc
. Процесс изучения начинался с исследования представлений, частичных представлений, а также шаблонов редактирования и отображения. Затем вы узнали о вспомогательных функциях дескрипторов, смешивающих разметку клиентской стороны с кодом серверной стороны.
Следующие темы касались библиотек клиентской стороны, включая управление библиотеками в проекте плюс пакетирование и минификацию. После конфигурирования компоновка была обновлена с учетом новых путей к библиотекам и разбита на набор частичных представлений, а с целью дальнейшей детализации обработки клиентских библиотек была добавлена вспомогательная функция дескриптора для среды.
Затем с использованием
HTTPClientFactory
и конфигурационной системы ASP.NET Core была создана оболочка службы, взаимодействующая с
AutoLot.Api
, которая применялась для создания компонента представления, отвечающего за построение динамической системы меню. После краткого обсуждения способов одновременной загрузки обоих приложений (
AutoLot.Api
и
AutoLot.Mvc
) была разработана основная часть приложения.
Разработка начиналась с создания контроллера
CarsController
и всех методов действий. Далее были добавлены специальные вспомогательные функции дескрипторов и в заключение созданы все представления, касающиеся записей
Car
. Конечно, был построен только один контроллер и его представления, но с помощью продемонстрированного шаблона можно создать контроллеры и представления для всех сущностей