加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 自定义错误在我的MVC 4应用程序中无效

发布时间:2020-12-16 09:38:07 所属栏目:asp.Net 来源:网络整理
导读:我的应用中启用了自定义错误. Web配置有如下条目: customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml" error statusCode="403" redirect="~/Views/Shared/UnauthorizedAccess.cshtml"/ error statusCode="404" redirect="~/Views/Share
我的应用中启用了自定义错误. Web配置有如下条目:

<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中指定的确切名称.

解决方法

您需要通过控制器和操作提供路径,而不是设置您的(* .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();
  }

...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读