CustomErrors不会重定向到自定义页面,而是MVC默认错误页面

时间:2013-04-17 23:01:39

标签: model-view-controller web-config custom-errors

我使用VS2012 web express和IIS Express从头创建了一个新的MVC 4.0解决方案。 由于瓷砖说我改变了我的web.config并添加了以下内容:

<customErrors defaultRedirect="Errors/GenericError.html" mode="On">
    <error statusCode="404" redirect="Errors/Error404.html"/>
</customErrors>

基本上当我在我的控制器中出现异常时,默认的MVC error.cshtml显示错误,而不是我的自定义页面GenericError.html。

如果我转到不存在的网址,我的Error404.html会正确显示,但不适用于通用方案。

我有什么想法可以改变这种行为吗?

1 个答案:

答案 0 :(得分:2)

听起来您的全局过滤器中没有错误属性。在MVC 4项目中,您应该能够搜索为您生成的类FilterConfig

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

<强>更新

HandleErrorAttribute全局过滤器用于MVC管道中发生的错误,例如您提到的控制器中的错误。

customErrors中的web.config元素用于其他所有内容。 HandleErrorAttribute不会尊重您在defaultRedirect的{​​{1}}属性中添加的值。

customErrors过滤器将查找您在生成的项目HandleError中应具有的共享视图。您可以通过在属性上设置属性将其指向其他视图。

例如,假设我们在shared\Error.cshtml下创建了一个新视图,然后您可以像这样注册过滤器:

Shared\Errors\CustomError.cshtml