У меня есть проект в .NET Core 1.1 с архитектурой MVC,
и я хочу перенаправить при неправильном URL-адресе (код состояния: 404; не найден), чтобы перенаправить сообщение об ошибке Просмотр, который я уже создал.
В другом проекте с одним контроллером, я сделал так, чтобы он работал правильно:
[Route ("/Home/Error")]
public IActionResult Error()
{
ViewBag.Title = "About Us";
return View();
}
[Route("/{a}/{*abc}")]
[HttpGet]
public IActionResult Err(string a)
{
return RedirectToAction("Error", "Home");
}
и имея при запуске:
app.UseMvc(routes =>
{ routes.MapRoute(
name: "Default",
template: "{controller=Home}/{action=GetDocument}/{id?}");
});
Но если в ЭТОМ ПРОЕКТЕ, с 4 контроллерами, с этой конфигурацией при запуске:
app.UseMvc(routes =>
{ routes.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "IndexB" }
);
);
и этот код на HomeController или на всех контроллерах (я пробовал оба):
[Route("/Home/Error")]
public IActionResult Error()
{
ViewBag.Title = "About Us";
return View();
}
[Route("/{a}/{*abc}")]
[HttpGet]
public IActionResult Err(string a)
{
return RedirectToAction("Error", "Home");
}
Когда первый код в другом проекте работает как шарм, он идет туда, куда должен идти, но с несуществующим URL-адресом переходит на страницу ошибок.
Но в ЭТОМ ПРОЕКТЕ со вторым кодом меня перенаправляют всегда на страницу ошибок, несмотря ни на что.