如何重定向到asp.net mvc 3中的错误页面?

时间:2012-01-20 17:49:29

标签: c# asp.net-mvc asp.net-mvc-3

所以,我正在尝试使用它重定向到我自己的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的属性,并且在我的AuthorizeAttribute的OnAuthorization方法中,我做了:

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

所以,现在当我宣布这个属性时,我选择了我想要重定向的路径。

它不像我想要只使用web.config一样自动化,但变得有用。你觉得伙计们,这是解决这个问题的好方法吗?