【问题标题】:How to handle 500 server errors in Umbraco如何在 Umbraco 中处理 500 个服务器错误
【发布时间】:2015-05-30 11:42:20
【问题描述】:

当服务器错误发生时,我只想要一个自定义错误页面 - 我已经尝试了我在谷歌上找到的无数建议组合,但什至没有开始让我到达那里。

基本上,我的表面控制器中有一些错误处理例程,我想在其中记录错误然后抛出异常,以便在某处返回 500 响应代码并显示自定义错误页面。

                try
                {
                    repository.AddShoppingCartItem(sci);
                }
                catch(Exception e)
                {
                    Log.Error("whatever...");
                    throw;
                }

然后在我的 web.config 中我尝试过

   <customErrors mode="On" defaultRedirect="error500">
   </customErrors>

   <customErrors mode="On" defaultRedirect="umbraco/surface/error500surface">
   </customErrors>

(第一个版本使用常规控制器,第二个版本使用表面控制器)

什么都不做。

我也按照其他人的建议添加了这一行,但没有区别:

我得到的是我的正常布局页面与此消息一起呈现:

加载部分视图脚本时出错(文件:~/Views/MacroPartials/Addcart.cshtml)

我想要的是显示一个自定义错误页面。

阅读 google 上的所有内容后,我完全不知道是否需要配置 Umbraco 来处理这些错误,或者它是否是纯 MVC 方法。我的印象是 404 错误是通过 umbraco 完成的,但 500 错误需要是纯 MVC 方法。不知道有没有人能证实这一点。无论哪种方式,链条上的某些东西正在吞噬我的 throw 声明,我不知道它是什么。

我也试过了

返回新的 HttpStatusCodeResult(500);

代替 throw & 只是让我得到一个讨厌的 IIS 错误页面。

任何帮助都将不胜感激,因为这让我发疯了。

【问题讨论】:

    标签: asp.net-mvc-4 error-handling umbraco7


    【解决方案1】:

    500 错误是服务器错误,在 Umbraco 中与在常规 IIS 中没有区别:

    这是一个服务器错误,只能由有权访问文件和网络服务器的网站管理员解决。出现此错误可能有一个/或多个原因。必须追查问题并进行相应处理。

    http://www.codeproject.com/Articles/545054/HTTPplus-plus-e-plusInternalplusserverplus

    更多信息: https://serverfault.com/questions/407954/how-to-diagnose-a-500-internal-server-error-on-iis-7-5-when-nothing-is-written-t

    编辑:显然您可以启用自定义错误,如下所示:
    http://helpnotes.vpasp.com/kb/611-General-hosting-questions/1089-How-to-Turn-Off-Friendly-Error-in-IIS-7xx/

    Edit2:这可能也很有趣:
    http://benfoster.io/blog/aspnet-mvc-custom-error-pages

    【讨论】:

    • 那里有一些有用的链接,但它仍然没有回答为什么我在控制器方法中的 throw 语句不会导致服务器错误的问题。在普通的 MVC 中,我确信会出现这种情况,但是使用 Umbraco 我得到一个 200 响应代码,所以 Umbraco 中的某些东西似乎正在处理我的错误。
    • 你确定?也许你应该测试一下。你可以用throw new HttpResponseException("Fatal error", HttpStatusCode.BadRequest); 强制它,但你真的不应该抛出致命错误,除非你真的无法更好地处理错误。
    • 是的-积极的。我在 Chrome 工具中运行了网络分析器,当我强制异常时看到 200 响应 - 然后在前端我看到错误加载部分视图脚本,如我的 OP 中所述。
    • 我可以通过返回 HttpStatusCodeResult(HttpStatusCode.Error (或其他)) 来强制执行此操作,但我得到的只是一个可怕的 IIS 错误,它根本不会选择我的自定义错误页面。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多