Как я могу перенаправить на страницу ошибки в asp.net mvc 3? - PullRequest
2 голосов
/ 20 января 2012

Итак, я пытаюсь перенаправить на страницу с ошибкой в ​​своем собственном атрибуте AuthorizeAttribute, используя:

filterContext.Result = new HttpStatusCodeResult(403);

В моем файле web.config изначально я пытался:

<customErrors defaultRedirect="/Error" mode="On">   
    <error statusCode="403" redirect="/UnAuthorize" /> 
</customErrors> 

После того, как я попробовал:

<customErrors defaultRedirect="/Shared/Error" mode="On">   
    <error statusCode="403" redirect="/Shared/UnAuthorize" /> 
</customErrors> 

И после этого я создал ErrorController, и я попробовал это:

<customErrors defaultRedirect="/Shared/Error" mode="On">   
    <error statusCode="403" redirect="/Error/UnAuthorize" /> 
</customErrors> 

Но браузер все еще показывает мне страницу ошибки по умолчанию для 403, любая идея?

ВОЗМОЖНОЕ РЕШЕНИЕ: Ну, я видел ответы @bobek и @Robert Levy, но я нашел другой способ, немного проще.

В моем AuthorizeAttribute я создаюправильно называется RedirectOnErrorTo, и в методе OnAuthorization моего AuthorizeAttribute я сделал:

if (!string.IsNullOrEmpty(this.RedirectOnErrorTo))
{
    filterContext.Result = new RedirectResult(this.RedirectOnErrorTo);
}

Итак, теперь, когда я объявляю этот атрибут, я выбираю путь, по которому я хочу перенаправить.

Это не автоматизированокак я хотел использовать только web.config, но становится полезным.Как вы думаете, ребята, это хороший способ решить эту проблему?

1 Ответ

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