WebAPI: версионирование на основе HTTP-заголовков

Допустим, что для различных версий API существуют разные контроллеры
Если необходимо делать выбор контроллера на основании заголовка, то для этого предлагается определить свою имплементацию интерфейса IHttpControllerSelector в ServicesContainer

Какой именно HTTP-заголовок необходимо использовать особо не важно, будь то Accept, или свой, например - X-Version (я выбираю Accept, исключительно из любопытства)

Легче всего реализовать IHttpControllerSelector - создать наследника DefaultHttpControllerSelector:

Swagger: внедрение произвольных http-заголовков

Если при необходимости использования web api через swagger необходимо отправлять кастомные http-заголовки, то это можно сделать очень просто
  1. открываем SwaggerConfig
  2. ищем метод, переданный в EnableSwaggerUi
  3. вызываем InjectJavaScript у объекта, типа SwaggerUiConfig (передаётся в качестве первого аргумента обработчика)
  4. В качестве параметров необходимо передать :
    1. сборку, содержащую js в качестве рекурса
    2. название ресурса