Que tipo de rota eu precisaria para fornecer URLs de vaidade?

Eu gostaria de fornecer aos meus usuários um URL de vaidade, algo como:

www.foo.com/sergio

Que tipo de rota eu precisaria criar?

Imagine que eu tenho o seguinte controlador e ação, como posso mapear uma URL vaidade para esse controlador?

public ActionResult Profile(string username)
{
    var model = LoadProfile(username);
    return View(model);
}

Aqui está o que eu tentei e o que acontece:

Opção A:

Cada url é capturado nesta rota, o que significa que todas as URLs que eu digito direcionam-me para o controlador da conta, em vez de apenasfoo.com/[USERNAME]. Nada de bom.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Profile",
        "{username}",
        new { controller = "Account", action = "Profile", username = UrlParameter.Optional }
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
}
Opção B:

Rotas padrão funcionam bem, mas ao tentar visitar um perfilfoo.com/[USERNAME] Eu recebo um erro HTTP 404.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

    routes.MapRoute(
        "DentistProfile",
        "{username}",
        new { controller = "Account", action = "Profile", username = UrlParameter.Optional }
    );
}

questionAnswers(2)

yourAnswerToTheQuestion