title: Transaction timeouts and connection pools issue
body: <p>In an asp.net 2.0 application I maintain, we were experiencing issues with transaction aborted errors (timeout). Code that fails seems to cause a timeout, then the page logging functionality that uses transactionscope (default constructor) fails (but not always). The timeout is set to 2 minutes. </p>
  
  <p>Some example code that is similar to what we have in our app is below:</p>
  
  <pre><code>Try
  
        Dim scope As TransactionScope = New TransactionScope(TransactionScopeOption.Required, New TimeSpan(0, 0, CInt(TransactionTimeout)))
  
      **A method call that fails is here**
  
       Using scope
  
  **other code is here**
  
  
  scope.complete
  
  end using
  
  
  catch
  </code></pre>
  
  <p>From what I've seen and read, my guess is that since the using block is never reached, the transaction times out. Then the logging code (done with any page request) tries to enlist in the existing transaction, which has timed out and results in a transaction aborted error (as soon as the constructor is called). Is this assumption correct? Why would only some requests fail going forward and not all (assuming they all use transactionscope)?</p>
  
  <p>My big question is how does connection pooling play into this? If user A hits the bad code, would user B then be potentially affected by this? This is the behavior we've seen. If not, what else might cause this? I've been to MSDN, but I can't find anything that really clicks with me as to what is happening and why.</p>
  
  <p>Here is the relevant portion of the connection string:</p>
  
  <pre><code>Enlist=true;Pooling=true;Connection Lifetime=20;Max Pool Size=25;Min Pool Size=5
  </code></pre>
  
  <p>FYI. Not sure if this is relevant, but the app uses an Oracle 11g database with the EntLib database factory pattern.</p>
  
  <p>Thanks for the help. </p>