【发布时间】: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