I noticed that the ConnectionManager issues a lock on a static object in the GetManager() call, which on first run calls the constructor that in turns calls Open() on the new connection, a potentially "long" operation.
This seems to create a bottleneck on a busy web site, when GetManager gets called from many threads at the same time. In this scenario I don't see a need for locking, as all requests are running on their own thread (read; having their own private LocalContext - HttpContext.Items).
Any thoughts on this issue?
Regards;
/jb