MVC5: Precedência de roteamento de atributo entre controladores

Estou usando o roteamento de atributo do MVC5 em meus controladores.

Pergunta, questão:

Existe uma maneira de controlar a precedência de roteamento de atributo entre os controladores?

Considere o seguinte

[Route("home/{action=index}/{username?}")]
public class HomeController : Controller
{
    [Route("home/index/{username?}", Order = 1)]
    [Route("home/{username?}", Order = 2)]
    [Route("{username?}", Order = 3)]
    public ActionResult Index()
    {
        // ... bunch of stuff
    }
}

Com base no código acima,HomeController.Index() O método de ação deve ser chamado usando as seguintes solicitações:

domínio/Domínio \ nome de usuário}domínio / home /domínio / home / {nome de usuário}domínio / página inicial / índice /domínio / home / índice / {nome de usuário}

Segundo controlador:

[Authorize(Roles = "Member")]
[Route("profile/{action=index}")]
public class ProfileController : Controller
{
    [Route("profile")]
    public ActionResult Index()
    {

    }
}

oProfileController.Index() deve ser chamado usando a seguinte solicitação.

domínio / perfildomínio / perfil / índiceO problema

Dos exemplos, se eu enviardomain/profile no URL, uma exceção de ambiguidade é lançada. Parece que existe uma ambiguidade entredomain/{username} edomain/profile.

Agora, se eu usasse o roteamento baseado em convenção, isso teria funcionado (vitórias na primeira partida). Mas isso pode ser feito no MVC5 Attribute Routing? porque descobri que uma biblioteca de terceiros suporta precedência entre controladores

https://github.com/mccalltd/AttributeRouting/wiki/Controlling-Route-Precedence

routes.MapAttributeRoutes(config =>
{
    config.AddRoutesFromController<ProfileController>();
    config.AddRoutesFromController<HomeController>();
});

questionAnswers(1)

yourAnswerToTheQuestion