Как реализовать поддержку списка устаревших/специфических 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?
Заранее спасибо!