ASP.NET настраиваемая маршрутизация и дружественные URL - PullRequest
1 голос
/ 01 апреля 2019

У меня есть веб-сайт (ASP.NET WebForms), где я создаю таблицу маршрутизации из базы данных. Кроме того, у меня включен friendlyUrl.

В Application_Start из Global.asax у меня есть следующий код:

RouteTable.Routes.Clear();

foreach (var page in pages)
{
    Route siteRoute = new Route(page.RouteName, 
        new CustomRouteHandler("~/" + page.Handler));

    RouteTable.Routes.Add(siteRoute);
}

var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
RouteTable.Routes.EnableFriendlyUrls(settings);

RouteTable будет выглядеть следующим образом:

Дружественный URL

/default => /default.aspx
/blog    => /blog.aspx
/about   => /about.aspx

Пользовательский URL из базы данных

/blog/my-first-post  => /blogpost.aspx
/blog/my-second-post => /blogpost.aspx

Проблема, с которой я столкнулся, заключается в том, что если есть страница с именем www.mysite.com/blog.aspx, например, а затем я помещаю сообщение в блоге по маршруту www.mysite.com/blog/my-first-post, последнее не отображается при отправке запроса на страница blog.aspx вместо blogpost.aspx, как я определил в предыдущем коде (page.Handler) в строке:

Route siteRoute = new Route(page.RouteName, new CustomRouteHandler("~/" + page.Handler));

Можно ли как-то обойти это, и оба URL, /blog и /blog/my-first-post, перенаправлены на две разные страницы?

...