Несколько контроллеров с одинаковыми URL-маршрутами, но разными методами HTTP

У меня есть следующие два контроллера:

[RoutePrefix("/some-resources")
class CreationController : ApiController
{
    [HttpPost, Route]
    public ... CreateResource(CreateData input)
    {
        // ...
    }
}

[RoutePrefix("/some-resources")
class DisplayController : ApiController
{
    [HttpGet, Route]
    public ... ListAllResources()
    {
        // ...
    }

    [HttpGet, Route("{publicKey:guid}"]
    public ... ShowSingleResource(Guid publicKey)
    {
        // ...
    }
}

Все три действия получили три разных маршрута:

GET /some-resourcesPOST /some-resourcesGET /some-resources/aaaaa-bbb-ccc-dddd

Если я помещаю их в один контроллер, все работает нормально, однако, если я разделяю их (как показано выше), WebApi выдает следующее исключение:

Найдено несколько типов контроллеров, соответствующих URL. Это может произойти, если атрибуты маршрутов на нескольких контроллерах соответствуют запрошенному URL.

Это сообщение совершенно очевидно. Похоже, что WebApi не учитывает метод HTTP при поиске подходящего кандидата для контроллера / действия.

Как я могу достичь ожидаемого поведения?

ОБНОВИТЬЯ немного покопался во внутренностях веб-API и понимаю, что так оно и есть по умолчанию. Моя цель состоит в том, чтобы разделить код и логику - в реальном случае эти контроллеры имеют разные зависимости и немного более сложны. Ради обслуживания, тестируемости, организации проекта и т. Д. Онидолжен быть разными объектами (ТВЕРДЫМИ и проч.).

Я думал, что могу переопределить некоторые службы WebAPI (IControllerSelector и т.д.) однако, это кажется немного рискованным и нестандартным подходом для этого простого и, как я предположил, общего случая.

Ответы на вопрос(1)

Ваш ответ на вопрос