The most probable reason for exhausting the connection pool is that you don't close and return your connections to the pool after use.
The easiest way to ensure you close the connection is to use a
using Statement (C# Reference)[
^].
using (DbConnection Connection = GetConnection())
{
}