调试超时的好方法有哪些?(C#)

调试超时的好方法有哪些?(C#),c#,.net,sql-server,subsonic,timeout,C#,.net,Sql Server,Subsonic,Timeout,我正在创建一个可以正常运行几个小时的站点,但是*.asmx和*.ashx调用开始超时 例外情况是:“超时已过期。在从池中获取连接之前已过超时时间。这可能是因为所有池连接都在使用,并且已达到最大池大小。” 我用亚音速作为ORM 我怀疑问题是基于每隔几分钟运行一次并访问数据库的计划任务。当我查看SQL Server 2000的“当前活动”时,我看到有: 100个状态为“睡眠”的进程 100把锁 100个进程来自应用程序“.Net SqlClient数据提供程序”,命令为“等待命令” 所以我猜这就

我正在创建一个可以正常运行几个小时的站点,但是*.asmx和*.ashx调用开始超时

例外情况是:“超时已过期。在从池中获取连接之前已过超时时间。这可能是因为所有池连接都在使用,并且已达到最大池大小。”

我用亚音速作为ORM

我怀疑问题是基于每隔几分钟运行一次并访问数据库的计划任务。当我查看SQL Server 2000的“当前活动”时,我看到有:

  • 100个状态为“睡眠”的进程
  • 100把锁
100个进程来自应用程序“.Net SqlClient数据提供程序”,命令为“等待命令”

所以我猜这就是问题所在。但我如何排除故障?这听起来像是db中的死锁状态吗?我一

c:\>iisrestart

(暂时)一切都好

谢谢-我只是从来没有遇到过这样的事情,我不确定最好的方法


迈克尔

我对亚音速一无所知,但也许你泄露了数据库的“上下文”?我会在您使用完数据库资源后检查是否正在处理它…

它可能是此问题的重复-

如果使用Load()而不是LoadAndCloseReader()加载对象,则每个连接都将保持打开状态,最终将耗尽连接池。

对集合调用Load()时,它将使读取器保持打开状态-如果希望读取器关闭,请确保调用LoadAndCloseReader()-或使用using块

还有一些源代码也很有帮助。

谢谢,48klocs--我调用了.FetchByParameter(),它生成了一个我没有关闭的读取器。现在阅读器处于“使用”块中,它就稳定多了。然而,我仍然在2个开放的连接上保持稳定,这我并不完全理解。比100多个连接要好得多,但我仍在努力解决这个问题。