Я играл с ASP.Net MVC некоторое время. Я обнаружил, что самое сложное - получить таблицу маршрутизации.ASP.NET MVC стратегия маршрутизации
Я нашел большинство примеров, оставляя маршрут по умолчанию на месте. Я обнаружил, что это приводит к множеству ошибок, когда маршрут по умолчанию перенаправляет на HomeController действие, которое не существует. Приведя к странным сообщениям об ошибках, где вы ожидаете увидеть простой 404.
В конечном итоге я установил для настройки маршрутизации, где я четко определяю все комбинации контроллеров/действий, которые я хочу разрешить, с помощью catch-all в конце для перенаправления на страницу 404, которая показывает разумное сообщение об ошибке.
Я что-то упустил? Или это действительно хороший способ сделать что-то?
Глядя на ответы, у меня есть, я думаю, что мне лучше прояснить вопрос.
Я пытаюсь проверить версию маршрутизации веб-сайта, который я создаю. Я заметил, что когда я уезжаю по маршруту {controller}/{action}/{id}, все виды URL-адресов, где я хотел бы отображать ошибку 404, действительно получают маршрутизацию в HomeController с недействительным действием и приводят к некоторой уродливой ошибке вместо этого.
Я немного смущен, потому что большинство примеров кода просто уходят в маршрут по умолчанию. Есть ли причина, по которой она есть, или это нормально удалить?
Схема Я использую в настоящее время выглядит немного как этот
routes.MapRoute("About", "About", new {controller = "Page", action = "About"});
routes.MapRoute("SignIn", "SignIn", new {controller = "Page", action = "SignIn"});
routes.MapRoute("SignOut", "SignOut", new {controller = "Page", action = "SignOut"});
routes.MapRoute("Authenticate", "Authenticate", new { controller = "Authentication", action = "Authenticate" });
routes.MapRoute("CatchAll", "{*url}", new { controller = "Error", action = "Http404" });
Я получил маршрут, указанный для каждого действия в системе. И хватит для отображения 404 в конце. Это хороший способ сделать это или есть более простой способ сделать схему маршрутизации безупречной?
Я нахожусь в одной лодке. Я думал, что поймать все будет работать, если по умолчанию маршрут не может найти контроллер + действие. Вместо этого контрольная фабрика выдает исключение. Вы все еще идете на явный маршрут? – dotjoe