【问题标题】:Custom errors not working in my MVC 4 app自定义错误在我的 MVC 4 应用程序中不起作用
【发布时间】: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


【解决方案1】:

您需要提供通过控制器和操作的路径,而不是设置 (*.cshtml) 剃须刀文件的路径。

这就是我让它按预期工作的方式

<customErrors mode="Off" defaultRedirect="/home/error">
  <error statusCode="404" redirect="/home/notfound" />
</customErrors>

在我的 Home Controller 中,我有一个名为 Error 的操作和另一个名为 NotFound 的操作

[AllowAnonymous]
public class HomeController : Controller
{   
  public ActionResult Error()
  {
    var qs = HttpUtility.ParseQueryString(Request.Url.Query);
    var errorPath = qs["aspxerrorpath"];

    return View(model: errorPath);
  }

  public ActionResult NotFound()
  {
     return View();
  }

...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2016-11-08
    • 2017-11-30
    • 2012-03-21
    • 2013-04-10
    • 2022-01-16
    • 2020-01-07
    • 2012-03-09
    相关资源
    最近更新 更多