Я могу успешно зарегистрировать собственный обработчик маршрута (исходящий из IRouteHandler) внутри global.asax.cs для маршрута веб-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
EDIT:
Итак, что я в итоге сделал, в основном следуя советам ниже, но просто переопределяя класс 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);
}
}