【问题标题】:Solving very intermittent exception in .net app解决 .net 应用程序中非常间歇性的异常
【发布时间】:2009-12-21 15:55:05
【问题描述】:

我有一个生产中的 asp.net MVC 应用程序,它很少但非常一致地抛出相同的异常,我不知道为什么。无论我做什么,我都无法在生产环境和开发环境中重现异常。

我正在记录所有未处理的异常。我有每个记录的异常的日期/时间、控制器、操作、异常消息和调用堆栈。所以,我很清楚这发生在哪里。只是不知道为什么。

为了解决这个问题,我正在考虑将此代码包装在 try/catch 中,并手动记录所有相关变量的名称/值。我会部署这个新的日志记录功能,一旦解决,我会删除它。

但是,然后我在想我如何打赌有更好、更便携的方式来做到这一点。有人可以帮忙吗?

编辑

This is what I am currently working off of.

【问题讨论】:

  • 贴出代码和异常?
  • @Paddy - 异常的细节并不重要。我对如何解决一般问题更感兴趣。
  • 好的,但是从它的声音来看,如果您已经记录了错误,那么除了娱乐之外您无能为力。对于您获得的详细信息,我会支持下面的 ELMAH 建议。
  • 好的,所以模型是空的。

标签: .net debugging exception


【解决方案1】:

您是否考虑过使用ELMAH

ELMAH(错误记录模块和 处理程序)是应用程序范围的错误 完整的测井设施 可插拔。可以动态添加 到正在运行的 ASP.NET Web 应用程序, 甚至所有 ASP.NET Web 应用程序 在机器上,无需任何 重新编译或重新部署。

一旦 ELMAH 被放入 运行 Web 应用程序并配置 适当地,你得到以下 设施不改单 你的代码行:

  • 记录几乎所有未处理的异常。
  • 用于远程查看重新编码异常的整个日志的网页。
  • 远程查看任何已登录用户的完整详细信息的网页 例外。
  • 很多情况下可以查看原版黄屏死机 为给定的 ASP.NET 生成的 异常,即使使用 customErrors 模式 已关闭。
  • 每个错误发生时的电子邮件通知。
  • 日志中最近 15 个错误的 RSS 提要。

ELMAH 不会记录应用程序的状态,但也许您可以抛出一个自定义异常来封装您需要查看的任何状态。您是否要记录诸如核心转储之类的内容?也许像debugdiag 这样的东西会更好:

调试诊断工具 (DebugDiag) 旨在帮助解决诸如挂起、性能下降、内存泄漏或碎片以及任何用户模式进程中的崩溃等问题。该工具包括额外的调试脚本,专注于 Internet 信息服务 (IIS) 应用程序、Web 数据访问组件、COM+ 和相关的 Microsoft 技术。

【讨论】:

    【解决方案2】:

    您是否在某处捕获了数据库异常,并且您的模型变量没有被填充,或者您的代码没有分支以指示需要重试(即错误页面/消息)?

    我还推荐ELMAH,它为您提供了来自请求的大量 HTTP/REQUEST/RESPONSE 类型的标头,并且它可能有足够的信息让您更好/更快地调试问题。您可能需要做一些工作才能让 Elmah 正常工作,因为您已经拥有一个包罗万象的处理程序/日志记录机制,因此 ELMAH 没有任何开箱即用的异常处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多