Roteamento no ASP.NET MVC, mostrando o nome de usuário na URL

Estou tentando fazer uma rota para que eu possa mostrar o nome de usuário no URL assim:

http: // localhost1234 / john

Aqui está o meu routeconfig:

 routes.MapRoute(
                name: "users", // Route name
                url: "{username}", // URL with parameters
                defaults: new { controller = "Home", action = "Index", username = "" } // Parameter defaults
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

Aqui está o meu HomeController:

 public ActionResult Index(string username = "Test")
 {
   return View();
  }

Primeiro de tudo, o URL não é alterado. Quando eu definirusername = "Test" dentro do meu route-config, o URL não é alterado.

Segundo, não consigo navegar para meus outros controladores. Se eu mudar o URL parahttp: // localhost123 / Bem-vindo, nada acontece. Ele deve me redirecionar para uma nova página.

O que eu estou fazendo errado aqui?

Se eu alterar a ordem das rotas, posso navegar para outras páginas, mas o nome de usuário não será exibido no URL.

Eu pesquisei no Google e todas as respostas sobre esse assunto dizem que eu deveria usar uma rota como a acima.

questionAnswers(2)

yourAnswerToTheQuestion