查找未关闭的 SqlConnection 的最快方法



我有一个 ASP.NET 的Web应用程序,它偶尔会返回以下令人恼火的错误:

超时已过期。在获取 从池连接。这可能是因为所有池化 连接正在使用中,已达到最大池大小。

我的经理怀疑这是因为应用程序中存在未关闭的SqlConnection。因此,我目前正在手动检查应用程序中的每个代码文件,以查看是否有任何连接保持打开状态。

有没有更快的解决方案来找到此错误的根源?

一堆不同的选项:

  • 使用 Resharper 及其"带模式的搜索"(也称为"结构搜索"(: http://blogs.jetbrains.com/dotnet/2010/04/introducing-resharper-50-structural-search-and-replace/

  • 为 FxCop 或 Roslyn 编写一个微型语法树查看器来执行相同的搜索(基本上,一个新的 SqlConnection 未释放(

  • 为 SqlConnection 编写一个包装类(比您想象的更常见(,并跟踪其中的打开/关闭连接。

  • 将 WinDbg 附加到"实时"或理想情况下出错的应用程序,并将堆对象重新定位到它们的根基位置。

  • 获取一个合适的分析器(SciTech 是一个简洁的(,它将为您提供用于创建对象的调用堆栈。

相关内容

  • 没有找到相关文章

最新更新