По вашему маршруту по умолчанию вы можете / должны добавить это для начала
routes.MapRoute("Catch All", "{*path}", new { controller = "Home", action = "ErrorPage" });
Изменить 2
проблема заключается в части redirectMode="ResponseRewrite"
без этого,это работает.
с использованием маршрута, хотя и решит 1 часть проблемы, где путь не может быть найден (404)
следующей части, как существующие пути с неверными идентификаторами или другими данными,можно исправить с помощью
<customErrors mode="On" defaultRedirect="/Home/ErrorPage" />
что именно делает redirectMode="ResponseRewrite"
?
Редактировать: что он делает.
redirectMode
- ResponseRedirect: указывает, что URL-адрес, на который должен направлять браузер, должен отличаться от исходного URL-адреса веб-запроса.
- ResponseRewrite: указывает, что URL-адрес браузера должен быть исходным URL-адресом веб-запроса.
Это имеет значение только для .NET 3.5 SP1 и .NET 4.0.
Редактировать 101:
Для redirectMode = "ResponseRewrite" ASP.NET внутренне вызывает Server.Execute (...), который не работает с маршрутами MVC, поэтому для MVCэто работает только со статическим файлом HTML.
<customErrors mode="On" defaultRedirect="~/Views/Shared/error.htm" redirectMode="ResponseRewrite" />
работает.