【问题标题】:How do I debug a situation with an MVC application that doesn't appear to throw any exceptions如何使用似乎没有引发任何异常的 MVC 应用程序调试情况
【发布时间】:2010-07-06 11:24:36
【问题描述】:

我们最近在 Microsoft 的 MVC 框架 (v2) 上为我们的 Intranet 开发了一个内部 Web 应用程序。这似乎工作得很好,但是在发生了一些未知事件之后,我们看到数据库查询似乎没有产生任何结果,而没有捕获到异常,这让我有些难过。

重新发布应用程序不会改变行为,但重新启动应用程序池将完全恢复功能。

为了完整起见,我们为 MVC 应用程序使用了一个专用的应用程序池,并使用 SQL 身份验证连接到 SQL Server,当 Web 服务器生闷气时,它会在其他主机上继续工作。似乎没有抛出任何异常(我们没有捕获任何异常,内置的未处理异常魔法也没有捕获任何异常)。在这种情况下,我们没有使用 LINQ to SQL,而是使用 SqlConnection/SqlCommand/存储过程的 ADO.Net 方法,如果它们无法连接或存储过程失败,我通常希望它们抛出异常。我已经对应用程序进行了概要分析,它似乎也没有泄漏任何资源。

我想我已经涵盖了所有方面,但我还应该从哪里寻找问题原因的取证呢?

编辑:我可能应该提到我们正在使用 NTLM 身份验证,并且执行诸如编辑 web.config(强制应用程序重新加载)之类的技巧没有效果——我们必须回收要修复的整个应用程序池。

【问题讨论】:

  • 在完成所有数据库连接后,您是否正在处理它们?如果您用完池连接,我希望得到一个例外,但值得一问......
  • 非常明显的建议,但以防万一……您是否有一个即将到期但未重新填充的缓存层?
  • @GalacticCowboy 我们所有的 Sql 对象都用 using 包裹起来,并尽快处理掉。
  • @Winston 目前,我们没有缓存层会干扰

标签: c# sql-server asp.net-mvc debugging


【解决方案1】:

您是否尝试过在异常期间使用SQL profiler 监控数据库流量?

【讨论】:

  • 我们已经尝试分析,并且看到请求通过,并且它们似乎完成没有问题(尽管稍后我需要与当地友好的 DBA 进行三次检查)
  • 原来它成功地没有返回任何结果——因为有一条通过应用程序的路径意味着尚未加载重要的配置数据,这导致延迟初始化静态属性设置为垃圾。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
相关资源
最近更新 更多