获取超时。在从池中获取连接之前,超时时间已过期。.exception

3

出现异常

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

代码:

 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)  

2
这个问题可能看起来有些奇怪,但是你是否释放了你的数据库连接? - RePierre
1个回答

1

这个异常告诉你连接池已经耗尽,也就是所有连接池都已满并且所有连接都在使用中,并且命令字符串超时了,在获取连接之前到达了超时时间(默认超时时间为15秒)。

正如RePierre建议的那样,请检查是否正确处理了连接的释放。

尽可能晚地打开连接并尽可能早地关闭/释放。

一般建议:始终优先使用USING语句来打开所有连接,以确保正确使用可处理对象。

TimeOutExpired


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接