【问题标题】:ASP - the timeout period elapsed prior to obtaining a connection from the poolASP - 从池中获取连接之前经过的超时时间
【发布时间】:2016-11-08 08:22:24
【问题描述】:

我遇到以下错误:

"超时时间已过。在获取一个 来自池的连接。这可能是因为所有汇集的 连接正在使用中,并且已达到最大池大小。”

似乎错误在以下代码块中:

da = new SqlDataAdapter(command);
command.CommandTimeout = 100;
da.Fill(dt);
conn.Close();
return dt;

【问题讨论】:

  • 可能应该将命令和连接包装在 using 语句中。这可能有助于您的连接泄漏。

标签: c# asp.net


【解决方案1】:

当您打开任何连接并且完成后未关闭时,它会显示上述错误。因为有应用程序池大小限制,超过限制后会显示错误。

所以在方法完成后尝试关闭连接。 或者暂时您可以在 web.config 文件中将最大池大小设置为 1000 或更多。

【讨论】:

  • 我不明白的是我已经在代码中有一个 conn.Close() 。那么为什么会有未关闭连接的可能性呢?
  • 如果您的网站有多个会话,并且每次打开后您都没有关闭连接,那么这将是应用程序池的问题,您告诉我有关当前连接的信息,但我们希望查看所有数据库处于打开状态的连接,只需触发命令 sp_who2 您将获得有关所有连接的信息。
【解决方案2】:

在您的问题中使用如此少量的代码很难说,但是当您没有正确处理您的数据库连接对象时,可能会发生此错误。 “使用”语句可能会帮助您解决这个问题。这里有一个带有相同错误消息和代码示例的 SO 问题:Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. 这可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多