Как реализовать поддержку списка устаревших/специфических url через контроллер?

У меня есть контроллер LegacyController и действие ViewUrl(string url) отображающее текущий url для примера. Хотелось бы вручную указать список устаревших маршрутов для специальных котроллера и действия, и так чтобы нельзя было обратиться к ним по шаблону {controller}/{action}/{id?} (т.е. http://localhost:5000/legacy/viewurl/) и в целом по шаблонам.

Я представляю реализацию как-то так:

// Program.cs
...
app.MapLegacyRoutes([
    "/old-route1",
    "/legacy/route/get/file/132"
]);
app.MapControllerRoute(
    name: null,
    pattern: "{controller=Home}/{action=Index}/{id?}"
);
...

// LegacyRouteExtensions.cs
...
public static void MapLegacyRoutes(this IEndpointRouteBuilder endpoints, string[] urls)
{
    // пока что такая реализация

    foreach (var url in urls.Select(u => u.TrimEnd('/')))
        endpoints.MapControllerRoute(null, url,
            new { controller = "Legacy", action = "ViewUrl", url });
}
...

Может ли в этом случае помочь кастомный IRouteConstraint для шаблона {controller=Home}/{action=Index}/{id?}? Можно ли реализовать это всё с помощью кастомного middleware?

Заранее спасибо!


Ответы (0 шт):