2014-01-10 47 views
3

变得异常获取超时已过期。在从池中获取连接之前已超时。 .exception

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

代码:

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

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

尝试尽快打开连接并尽快关闭/处置。

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

TimeOutExpired

相关问题