Nomes ambíguos de controladores com atributos de roteamento: controladores com o mesmo nome e namespace diferente para controle de versão

Estou tentando adicionar o controle de versão da API e meu plano é criar um controlador para cada versão no espaço para nome diferente. A estrutura do meu projeto se parece com isso (nota: nenhuma área separada para cada versão)

Controllers
 |
 |---Version0
 |      |
 |      |----- ProjectController.cs
 |      |----- HomeController.cs
 |
 |---Version1
       |
       |----- ProjectController.cs
       |----- HomeController.cs

Estou usando RoutingAttribute para as rotas. Portanto, o ProjectController na Versão0 tem função com route como

namespace MyProject.Controllers.Version0
{
   class ProjectController : BaseController
   {
     ...

     [Route(api/users/project/getProjects/{projectId})]
     public async GetProjects(string projectId) 
     {
       ...
     }
  }
}

e ProjectController na Versão1 tem função com route como

namespace MyProject.Controllers.Version1
{
   class ProjectController : BaseController
   {
     ...

     [Route(api/v1/users/project/getProjects/{projectId})]
     public async GetProjects(string projectId) 
     {
      ...
     }
  }
}

Mas, recebo o 404-NotFound quando estou tentando acessar o serviço.

Se eu renomear os controladores para terem um nome exclusivo (Project1Controller e Project2Controller), o roteamento funcionará. Mas, estou tentando evitar renomear por simplicidade.

Eu segui este link para resolver o problema, mas não ajudou. Criei áreas, mas ainda não obtive sucesso. Adicionar lógica de roteamento no arquivo global.aspx não ajuda. O espaço para nome também não funciona.http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx/

O link acima sugere criar áreas, mas o roteamento de atributos não suporta áreas conforme o link:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

Existe outra solução? Um erro com RoutingAttributes?

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion