c# - 获取超时已过期。在从池中获取连接之前超时期限已过。 。异常(exception)

标签 c# .net sql-server linq

获取异常

超时已过。在从池中获取连接之前超时期限已过。发生这种情况的原因可能是所有池连接都在使用中并且已达到最大池大小。

代码:

 HotelDealsDataClassesDataContext hotelDealsDataContext = DatabaseHelper.GetHotelDealsDataContext();
 hotelDealsDataContext.spInsertAsyncHotelDealFeedRequestData(Utility.GetBinaryData(hotelDeal), DateTime.Now);

堆栈跟踪:

 at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
 at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
 at System.Data.SqlClient.SqlConnection.Open()  
 at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) 
 at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()  
 at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()  
 at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)    
 at System.Data.Linq.DataContext.ExecuteMethodCall(Object instance, MethodInfo methodInfo, Object[] parameters)  
 at Tavisca.TravelNxt.Deals.DataFeeders.DataAccessLayer.HotelDealsDataClassesDataContext.spInsertAsyncHotelDealFeedRequestData(Binary hotelDealData, Nullable`1 addDate)  

最佳答案

这个异常告诉你你已经耗尽了连接池,意味着所有连接池已满并且所有连接都在使用中,并且在获得连接之前达到命令字符串超时(默认超时为 15 秒)。 正如 RePierre 建议的那样,检查您是否正确处理了连接。

尝试尽可能晚地打开连接并尽快关闭/处置。

一般建议:- 总是喜欢 USING 打开所有连接的语句 它确保正确使用 IDisposable 对象。

TimeOutExpired

关于c# - 获取超时已过期。在从池中获取连接之前超时期限已过。 。异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21039206/

相关文章:

c# 多条件排序

c# - 在 .NET 中创建和处置 KeyVaultClient

sql - 从巨大的生产表中复制数据

sql-server - 如何在 SQL Server 中向现有表列添加注释?

sql-server - 在 ORDER BY 子句中无效,因为它不包含在聚合函数或 GROUP BY 子句中

c# - .NET 项目引用 : How to reference a dll via a referenced project?

c# - 这种 bool 方法是一种不好的做法吗?

c# - 将 WaitOne 与 IPC 命名互斥体一起使用时,可以有一个空的 while block 吗?

c# - 为什么要使用模拟框架?

c# - .NET 在运行时再次加载程序集