Jakiego rodzaju trasy potrzebowałbym, aby podać adresy URL próżności?

Chcę udostępnić moim użytkownikom niestandardowy adres URL: coś w stylu:

www.foo.com/sergio

Jaką trasę musiałbym stworzyć?

Wyobraź sobie, że mam następujący kontroler i działanie, jak mogę zmapować niestandardowy adres URL do tego kontrolera?

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

Oto, co próbowałem i co się dzieje:

Opcja A:

Każdy adres URL jest przechwytywany na tej trasie, co oznacza, że ​​każdy adres URL typu I kieruje mnie do kontrolera konta, a nie tylkofoo.com/[USERNAME]. Nie dobrze.

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
    );
}
Opcja B:

Domyślne trasy działają dobrze, ale podczas próby odwiedzenia profilufoo.com/[USERNAME] Otrzymuję błąd 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