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

Posted

技术标签:

【中文标题】无法在 ASP.NET MVC 网站中获取详细的错误信息【英文标题】:Can't get detailed error information in ASP.NET MVC website 【发布时间】:2012-02-22 08:45:24 【问题描述】:

我刚刚将一个 ASP.NET MVC 3 应用程序部署到我们的暂存服务器。每当发生错误时,我都无法获得详细的错误信息,即“黄屏死机”。相反,我只收到一个简单的“抱歉,处理您的请求时发生错误”。消息。

我的 Web.config 是否包含关闭的 customErrors,即:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      ...
    </assemblies>
  </compilation>
  <customErrors mode="off"/>
</system.web>

在这种情况下,我确切地知道潜在的错误是什么。 (我忘记设置存储过程的权限。)但我真的想(重新)启用错误处理,以便我可以快速找到这些错误。当然,一旦我们真正上线,出于安全原因,我会删除它。

还有哪些其他设置可以覆盖默认的 ASP.NET 错误处理?

【问题讨论】:

CustomErrors mode="Off"的可能重复 【参考方案1】:
<customErrors mode="Off"/>

“Off”必须正确大写。

来自“Editing ASP.NET Configuration Files”:

区分大小写

因为标签必须是格式良好的 XML,所以标签, 子标签和属性区分大小写。标签名称和属性 名称是驼峰式大小写的,这意味着标签的第一个字符 name 是小写的,并且任何后续连接的第一个字母 单词或单词是大写的。在大多数情况下,字符串属性值是 Pascal-case,这意味着第一个字符是大写的并且 任何后续连接的单词或单词的第一个字母是 大写。异常有真假,总是小写。

记住孩子们,你每天都会学到新东西。即使你学的很蹩脚。

【讨论】:

+1 表示“记住孩子们,你每天都会学到新东西。即使你学到的东西很蹩脚。” :)【参考方案2】:

您的Global.asax.cs 文件中可能有HandleErrorAttribute 全局过滤器。删除该行。

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    
        filters.Add(new HandleErrorAttribute());
    

【讨论】:

【参考方案3】:

更好的长期解决方案可能是将Elmah 添加到您的项目中,它会为您的Web 项目添加详细的日志记录。

包括:

记录几乎所有未处理的异常。 用于远程查看重新编码异常的整个日志的网页。 用于远程查看任何记录的异常的完整详细信息的网页,包括彩色堆栈跟踪。 在许多情况下,即使关闭了 customErrors 模式,您也可以查看 ASP.NET 为给定异常生成的原始黄屏死机。 每个错误发生时的电子邮件通知。 日志中最近 15 个错误的 RSS 提要。

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于无法在 ASP.NET MVC 网站中获取详细的错误信息的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名生日家庭住址等详细信息

如何在 asp.net mvc C# 中使用 paypal 交易的交易 ID 获取交易详情?

ASP.NET Core MVC 项目无法加载程序集

asp.net mvc 中的 Google 身份验证 - 无法获取用于 Google 登录的 redirectUrl

ASP.NET MVC 4 无法从表单中检索文件

无法在 ASP.NET MVC 5 中从视图到控制器获取 Select2 标记值