【发布时间】:2012-12-01 11:09:55
【问题描述】:
我在我的应用中启用了自定义错误。 web config 有一个条目如下:
<customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml">
<error statusCode="403" redirect="~/Views/Shared/UnauthorizedAccess.cshtml"/>
<error statusCode="404" redirect="~/Views/Shared/FileNotFound.cshtml"/>
</customErrors>
我还将HandleError 属性应用为全局操作过滤器。我的FilterConfig 内容如下:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
此外,~/Views/Shared 文件夹中定义了默认的Error.cshtml。
然而,我的应用程序显示了 IE 的那个丑陋的默认错误页面。
更新
我检查了自定义错误页面在除 IE 之外的所有其他浏览器中都可以正常显示。这里有什么关系?
进一步更新
刚刚找到这篇文章。 http://perishablepress.com/important-note-for-your-custom-error-pages/
它说 IE 希望自定义错误页面的大小至少为 512 字节。如果您的自定义错误页面小于该大小,它将抛出自己的丑陋错误页面。
最新更新 现在一切正常,因为我增加了错误页面的有效负载。但是,对于未处理的异常,只会显示默认的 Error.cshtml 页面。对于其他状态代码,我得到一个 ASP.NET 404,说它在我在 web.config 文件中指定的位置找不到我的自定义错误页面。我确实有自定义错误页面,并且它们具有我在 web.config 中指定的确切名称。
【问题讨论】:
-
您是否在 Error.cshtml 中做任何可能导致错误的事情?
-
确保错误视图中有模型
@model System.Web.Mvc.HandleErrorInfo。 -
@ChrisBint:没什么。它是开箱即用的。除了按照 Nate 的建议添加一个模型外,我没有碰过它。没有效果。
-
@Nate:谢谢,Nate。我刚刚在 Error.cshtml 文件中添加了模型定义。不过没有变化。我仍然得到丑陋的 IE 错误页面。
-
好的。在 Firefox 中对其进行测试后,我现在才注意到它可以在 Firefox 和 Chrome 中运行。只有在 IE 中,自定义错误页面才不会出现。我已经更新了问题并添加了标签。
标签: asp.net-mvc-4