| Понедельник, 29 апреля, 2013
Метки: ASP.NET Web API Комментарии: 0
Маршрутизация Web API часто вызывает много вопросов. Как работает маршрутизация? Почему мой маршрут не работает? Почему не вызывается метод действия? И зачастую трудно отладить работу маршрутов.
Для отладки маршрутов существует специальный инструмент "ASP.NET Web API Route Debugger", который облегчает работу разработчикам приложений Web API.
В данной статье будет рассказано, как работать с отладчиком маршрутов, и дополнительно показано как работает маршрутизация.
Установить Route Debugger можно через NuGet (http://www.nuget.org/packages/WebApiRouteDebugger/).
PM> Install-Package WebApiRouteDebugger
NuGet добавит новую область (area) в проект. На рисунке ниже показаны новые файлы (иконка со знаком плюс).
Запустим приложение и откроем адрес http://localhost:xxx/rd, чтобы увидеть страницу отладки маршрутов.
Вводим адрес, который нужно проверить и нажимаем кнопку Send. Ниже отобразятся результаты.
Что означает каждая секция в результатах будет объяснено далее.
Механизм маршрутизации ASP.NET Web API состоит из трех шагов: поиск подходящего маршрута и извлечение данных маршрута, поиск подходящего контроллера, и поиск подходящего метода действия. Если какой-то из шагов не даст положительного результата, то последующие шаги не выполнятся. Например, если контроллер не найден, то поиск метода не начнется.
На первом шаге, урл должен соответствовать определенному шаблону. Каждый маршрут задается шаблоном, и дополнительно можно указать значения по умолчанию, ограничения, маркеры данных и обработчики. По умолчанию определения маршрутов размещаются в App_Start/WebApiConfig.cs. Как только соответствующий маршрут найден, то из адреса извлекаются данные в соответствии с определением шаблона маршрута. Эти данные представляют собой словарь данных(dictionary) строка-объект.
Проверка соответствия контроллера производится по значению ключа "controller" в данных маршрута. Если такой ключ отсутствует, то контроллер не будет выбран.
После успешного выбора контроллера все его открытые методы определяются через рефлексию. Для нахождения метода действия используется следующий алгоритм:
Copyright © CodeHint.ru 2013-2024 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля