Вы можете добавить универсальный маршрут, добавив метод действия с маршрутом, который всегда будет совпадать, если нет других.
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "CatchAll",
template: "{*url}",
defaults: new { controller = "CatchAll", action = "Index" });
});
Для API:
public class CatchAllController : Controller
{
[HttpGet("{*url}", Order = int.MaxValue)]
public IActionResult Index()
{
return NotFound(YourModel)
}
}
Для MVC:
public class CatchAllController : Controller
{
public IActionResult Index()
{
Response.StatusCode = StatusCodes.Status404NotFound;
return View();
}
}