Enrutamiento en ASP.NET MVC, mostrando nombre de usuario en URL

Estoy tratando de hacer una ruta para poder mostrar el nombre de usuario en la URL de esta manera:

http: // localhost1234 / john

Aquí está mi 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 }
            );

Aquí está mi HomeController:

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

En primer lugar, la URL no ha cambiado. Cuando configurousername = "Test" dentro de mi route-config, la URL no cambia.

En segundo lugar, no puedo navegar a mis otros controladores. Si cambio la URL ahttp: // localhost123 / Bienvenido, no pasa nada. Debería redirigirme a una nueva página.

¿Qué estoy haciendo mal aquí?

Si cambio el orden de las rutas, puedo navegar a otras páginas, pero el nombre de usuario no se muestra en la URL.

Busqué en Google y todas las respuestas sobre este tema dicen que debería usar una ruta como la anterior.