ASP.NET MVC RC1 проблема маршрутизации - PullRequest
1 голос
/ 17 февраля 2009

У меня есть таблица маршрутов, похожая на эту

// Allow browsing categories by name, instead of by ID.
routes.MapRoute("Categories", "Categories/{action}/{name}",
    new { controller = "Categories", action = "Index", name = "" }
);

// All other pages use the default route.
routes.MapRoute("Default", "{controller}/{action}/{id}",
    new { controller = "Applications", action = "Index", id = "" }
);

// Show a 404 error page for anything else.
routes.MapRoute("Error", "{*url}",
    new { controller = "Error", action = "404" }
);

Однако маршрутный символ в конце не вызывается ... если я ввожу контроллер или URL, который не существует, он пытается использовать маршрут по умолчанию выше маршрутного символа ..., что приводит к тому, что вредоносный ресурс не найден ASP. страница с чистой ошибкой ... Мне нужна пользовательская страница с ошибкой ... пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 17 февраля 2009

Почему бы вам не создать стандартную страницу пользовательских ошибок ASP .NET?

<customErrors
       mode="RemoteOnly" 
       defaultRedirect="~/View/Shared/CustomErrorPasge.aspx" 
/>
1 голос
/ 17 февраля 2009

Если вы введете несуществующий контроллер, например, «BadController / SomeAction / 123», он будет получен вторым маршрутом.

Этот последний маршрут будет выбран только в том случае, если ни один из двух предыдущих не сделал этого, например, URL-адрес /SomeRandomFile.aspx или что-то еще, что даже близко не соответствует действию {controller} / { } / {id} 'синтаксис.

В своих проектах я использую <customErrors mode="RemoteOnly" defaultRedirect="/Error" /> внутри моего файла web.config как правило для всех исключений. Предполагая, что у вас нет правила для направления запроса в '/ Error', вам понадобится контроллер ошибок.

Затем можно использовать метод protected void Application_Error(object sender, EventArgs e) для выполнения некоторого кода в случае исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...