views:

236

answers:

0

I have an IIS hosted WCF Service which uses SqlHelper class from DAAB version 2.0 in the data layer

Once in a while, it throws exception at this line of ExecuteReader (a static method):

Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader()

Type: System.Runtime.InteropServices.COMException Message: The handle is invalid. (Exception from HRESULT: 0x80070006 (E_HANDLE))

In the IIS server (6.0), the application pool gets recycled. And the event log show following error message:

An unhandled exception occurred and the process was terminated.

Application ID: /LM/W3SVC/671226/Root/WCFMerchant

Exception: System.Threading.SemaphoreFullException

Message: Adding the given count to the semaphore would cause it to exceed its maximum count.

StackTrace: at System.Threading.Semaphore.Release(Int32 releaseCount) at System.Data.ProviderBase.DbConnectionPool.CleanupCallback(Object state) at System.Threading._TimerCallback.TimerCallback_Context(Object state) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._TimerCallback.PerformTimerCallback(Object state)

Anyone has any idea why this error occurs?
Is there any problem to use the SQLHelper class which mostly in static methods from a WCF service (multithreaded)? If that is the case, any solution to fix it without greatly reconstruct my project's data layer?