4

我的 MVC 应用程序中有一个自定义错误页面,它只是 ~/error/ 但是当我在 Web.Config 中打开自定义错误时,如下所示:

<customErrors mode="On" defaultRedirect="~/error/" />

它仅适用于 400 错误而不是服务器端 500 错误,而是在白页上给我以下错误消息:

“抱歉,处理您的请求时出现了一个错误。”

我怎样才能让每一个错误都转到 defaultRedirect 页面?

4

1 回答 1

3

500 错误应该由 MVC 应用程序自己处理。定义的自定义错误web.config用于 500 错误以外的错误。

基本上,您需要使用RegisterGlobalFilter方法 (in global.asax) 向过滤器集合添加一个新HandleErrorAttribute的(您将在 HandleErrorAttribute 中命名用于错误的视图),然后创建一个将其作为模型的视图System.Web.Mvc.HandleErrorInfo。没有控制器可以处理这些错误或将模型发送到视图,因此您不能只重定向到错误页面。

您可以在http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/01/error-handling-and-customerrors-and-mvc3-oh-my.aspx获得更多信息。

编辑有一种替代方法,其中所有错误都通过 MVC 处理,如如何在 Asp.Net Mvc 3 中显示自定义错误页面?. 基本上,您在 global.asax 文件中设置一个protected void Application_Error()来处理所有错误,而无需通过 web.config。

于 2012-06-10T03:50:55.573 回答