Ввести вопрос
Недавно я узнал, что вызов ApiController
Action вызовет метод DelegatingHandler
SendAsync
и что вызов vanilla Controller
Action не вызовет его.
Поиск и исследования
Я просмотрел Web Api и узнал, что он включает HttpMessageHandler
, который является родителем класса DelegatingHandler
. Это заставляет меня думать, что обработчики HTTP-сообщений, как правило, выполняются только как часть конвейера веб-API.
Кроме того, Обработчики сообщений Http выполняются до Url Routing, поэтому, вероятно, это не URL-маршрутизация, которая выбирает между конвейером Web API и MVC.
... рассмотрим использование фильтра действий вместо обработчика сообщений [поскольку фильтры] запускается после маршрутизации URI.
Вопрос
- Являются ли
HttpMessageHandlers
частью ASP.NET Web API, но не ASP.NET MVC? - Что такое эквивалент
HttpMessageHandler
в MVC ( ЭКВИВАЛЕНТ на диаграмме)? - Что заставляет запрос следовать конвейеру веб-API ( FORK на диаграмме)?
- Запросы веб-API принципиально отличаются от запросов MVC?
Я имею в виду, что это происходит примерно так, но, пожалуйста, поправьте меня.
Request from Client
|
IIS
|
ASP.NET
|
HttpApplication.BeginRequest
|
et cetera
|
HttpApplication.MapRequestHandler - is this what does the routing?
|
FORK
/ \
/ \
/ \
/ \
/ \
**Web API** **MVC**
| |
HttpControllerRouteHandler MvcRouteHandler
| |
HttpControllerHandler |
| |
HttpMessageHandlers EQUIVALENT?
i.e. |
DelegatingHandlers |
incl. |
HttpServer |
CustomHandlers |
HttpRoutingDispatcher |
HttpControllerDispatcher |
Полезные ссылки