无法在 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 获取交易详情?