我使用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会正确显示,但不适用于通用方案。
我有什么想法可以改变这种行为吗?
答案 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