Как перенаправить пользователя на пользовательскую страницу 404 в ASP.NET MVC вместо того, чтобы выбрасывать исключение?


18

Я хочу, чтобы иметь возможность захватить исключение, которое возникает, когда пользователь запрашивает несуществующий контроллер и перенаправляет его на страницу 404. Как я могу это сделать?

Например, пользовательские запросы http://www.nosite.com/paeges/1 (должно быть/pages/). Как сделать так, чтобы они перенаправлялись на 404, а не на экран исключения?

6

Посмотрите на this page для маршрутизации 404 ошибок на указанную страницу.

+2

Вы можете обновить ответ, чтобы включить соответствующие данные в нем. 17 май. 162016-05-17 05:03:44


16

Просто используйте маршрут:

// We couldn't find a route to handle the request. Show the 404 page. 
routes.MapRoute("Error", "{*url}", 
    new { controller = "Error", action = "404" } 
); 

Поскольку это будет глобальный обработчик, положить его на всем пути в нижней части по умолчанию маршрута.

+6

Правильно ли это? Поскольку я уверен, что если я определяю маршрут для {controller}/{action}/{id}, скажем, и пользователь вводит url с контроллером, который не существует, тогда он будет желтым, так как этот первый маршрут будет соответствовать, и ваш поймать все никогда не будет достигнуто? 22 окт. 082008-10-22 19:48:03

  0

Я просто попробовал это и все еще получаю желтый экран 404. 15 дек. 112011-12-15 21:03:17

+1

Это действительно работает, но это означает, что у вас должны быть ручные маршруты для всех ваших контроллеров, то есть нет '{controller}/{action}/{id } 'вместо этого вам придется делать« Home/{action}/{id} ',' Account/{action}/{id} 'и т. д. 22 янв. 132013-01-22 23:01:38

  0

@SerjSagan, в настоящее время вы можете использовать ограничения маршрута, например:' routes .MapRoute ( имя: «Главная», URL: «{action}», defaults: new {controller = "Home", action = "Index"}, Ограничения: new {action = "Index | Справка | Заказы "} );' 08 мар. 162016-03-08 12:43:01


1

Нашел на одном сайте - Strategies for Resource based 404s

+1

Ссылка только ответы не приветствуются на SO. 21 окт. 162016-10-21 22:27:38