【问题标题】:Displaying custom error CSHTML page in MVC5 on 404 / 500 / any exception?在 404 / 500 / 任何异常的 MVC5 中显示自定义错误 CSHTML 页面?
【发布时间】:2015-02-10 18:09:42
【问题描述】:

我一整天都在为此烦恼。我试图在抛出异常时只显示一个友好的 cshtml 页面,以便我的用户体验保持一致 - 我不希望我的用户甚至知道我在 UI 的 .net 堆栈上,永远。

我正在通过导航到localhost:2922/junkurl 进行测试, - 如果 URL 无法解析、找不到或生成异常,我想显示一个友好呈现的 cshtml 页面。

我的 web.config 中有什么:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Views/Shared/Error.cshtml">
</customErrors>

这会导致默认的黄色错误页面。但是如果我在根目录中放置一个error.html 页面并使用它:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/error.html">
</customErrors>

它有效。唯一的问题是,我不想用直接的 html 重新构建我的整个 Layout / LoginPartial / etc - 我想用剃刀渲染它。围绕这个的典型方法是什么?我已经对此进行了大量搜索,如果我错过了答案,我深表歉意,我完全不知所措。

如果可能的话,我宁愿从代码中执行此操作,但据我所知,代码只会涵盖一定程度的异常......在某一点上,它似乎必须通过配置来处理。我只希望它是简单的配置!

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor


    【解决方案1】:

    尝试在您的 web.config 中使用 ErrorController 和以下配置

    web.config

    <customErrors mode="On" defaultRedirect="~/Error">
      <error redirect="~/Error/NotFound" statusCode="404" />
      <error redirect="~/Error/InternalServer" statusCode="500" />
    </customErrors>
    

    错误控制器

    public class ErrorController : Controller
    {
        public ActionResult Index()
        {
            return View("Error");
        }
    
        public ActionResult NotFound()
        {
            Response.StatusCode = 200;
            return View("NotFound");
        }
    
        public ActionResult InternalServer()
        {
            Response.StatusCode = 200;
            return View("InternalServer");
        }
    }
    

    【讨论】:

    • 有什么方法可以使用 MVC 视图/渲染并从 URL 中删除 aspxerrorpath 吗?否则,这很好用:)
    • 我问的原因是因为理想情况下我的用户不会知道我什至在 .NET 上...试图隐藏尽可能多的实现/架构
    • 将 redirectMode="ResponseRewrite" 添加到 customErrors 部分
    • 如果我这样做,我会再次得到通用黄色错误页面,因为显然 ResponseRewrite 不喜欢 MVC 路由
    • 是的,我的错。看看这个。这里有一个关于你的问题的讨论stackoverflow.com/questions/2971864/…
    猜你喜欢
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多