Пользовательские обработчики маршрутов в ASP.Net WebAPI
Я могу успешно зарегистрировать пользовательский обработчик маршрута (производный от IRouteHandler) внутри global.asax.cs для маршрута Web API ala:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{client}/api/1.0/{controller}/{action}/{id}",
defaults: new{id = UrlParameter.Optional}
).RouteHandler = new SingleActionAPIRouteHandler();
Однако, похоже, я не могу найти способ сделать это при попытке настроить хост в памяти для API для тестирования интеграции, когда я вызываю HttpConfiguration.Routes.MapRoute. Я не могу установить обработчик для возвращенного IHttpRoute.
Должен ли я делать это по-другому (например, с помощью пользовательского HttpControllerSelector)? Я бы хотел сделать это одинаково в обоих случаях.
Спасибо, Matt
РЕДАКТИРОВАТЬ:
Итак, в итоге я следовал советам, приведенным ниже, но просто переопределил класс HttpControllerDispatcher следующим образом:
public class CustomHttpControllerDispatcher : HttpControllerDispatcher
{
public CustomHttpControllerDispatcher(HttpConfiguration configuration) : base(configuration)
{
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// My stuff here
return base.SendAsync(request, cancellationToken);
}
}