无法在ASP.NET MVC网站中获取详细的错误信息

18

我刚刚将一个ASP.NET MVC 3应用程序部署到我们的演示服务器。每当出现错误时,我无法获取详细的错误信息,例如“黄色屏幕死机”(yellow screen of death)。相反,我只会得到一个简单的“抱歉,处理您的请求时发生错误”的消息。

我的Web.config确实包括了customErrors off,即:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      ...
    </assemblies>
  </compilation>
  <customErrors mode="off"/>
</system.web>
在这种情况下,我知道底层的错误是什么。(我忘记在存储过程上设置权限。)但我真的想(重新)启用错误处理,以便快速发现这些 bug。当然,出于安全考虑,一旦我们实际上线,我会删除它。
还有哪些设置可能覆盖了默认的 ASP.NET 错误处理呢?

可能是[CustomErrors mode="Off"]的重复问题。(https://dev59.com/ZXVD5IYBdhLWcg3wE3No) - Dave Mateer
4个回答

34
<customErrors mode="Off"/>

必须正确使用大写字母"Off".

来自 "编辑ASP.NET配置文件":

大小写敏感

由于标签必须是格式良好的XML,因此标记、子标记和属性是区分大小写的。标记名称和属性名称采用驼峰式大小写,这意味着标记名称的第一个字符为小写,并且任何后续连接的单词的第一个字母都为大写。在大多数情况下,字符串属性值采用帕斯卡式大小写,这意味着第一个字符为大写,并且任何后续连接的单词的第一个字母也为大写。例外情况是true和false,它们始终为小写。

记住孩子们,你每天都会学到新东西。即使你所学的内容很无聊。


13
记住孩子们,每天都会学到一些新东西,即使你所学的可能有些无聊。+1 :) - Ravi Gadag

7
你可能在你的Global.asax.cs文件中有一个HandleErrorAttribute全局过滤器。请移除该行代码。
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

2
一个更好的、长期的解决方案可能是将 Elmah 添加到您的项目中,它可以为您的 Web 项目添加详细的日志记录。
包括:
  • 几乎所有未处理异常的日志记录。
  • 一个 web 页面,可远程查看记录的异常的完整日志。
  • 一个 web 页面,可远程查看任何一个已记录异常的完整详细信息,包括彩色堆栈跟踪。
  • 在许多情况下,即使关闭了 customErrors 模式,您也可以查看 ASP.NET 为给定异常生成的原始黄屏。
  • 每次错误发生时的电子邮件通知。
  • 来自日志的最后 15 个错误的 RSS 订阅。

0

检查您的服务器是否使用相同的配置文件来运行网站(如果部署到网站目录的配置文件是相同的)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接