title: Reason to use PerThreadLifetimemanager vs Transientlifetimemanager
body: <p>I use DI in constructors.
  BaseShoppingCart is a service in which I set ShoppingCartId (used for cart items).
  here is the constructor: </p>
  
  <pre><code>public BaseShoppingCart( HttpContextBase context, IRepository&lt;TCart&gt; cart  ,IProductService productservice)
  {  
      _context = context;
      _cart = cart;
       _productService = productservice;
      ShoppingCartId = _context.Request.IsAuthenticated ? _context.User.Identity.Name : getSessionCartId();
  }
  </code></pre>
  
  <ul>
  <li>If I set Transientlifetimemanager (by default) in DI container (Unity) no bugs are revealed.</li>
  <li>If I set PerThreadLifetimeManager any user may get  <strong>cart of another user</strong>!  As I read from this article <a href="https://stackoverflow.com/questions/14591422/why-is-perthreadlifetimemanager-used-in-this-example">Why is PerThreadLifetimeManager used in this example?</a> - thread is longer than request so second call of ShoppingCartController is this case may not invoke ctor of BaseShoppingCart. Instead existing BaseShoppingCart object (object of another user) is returned from container.</li>
  </ul>
  
  <p>I need your opinions:</p>
  
  <ol>
  <li>Do I understand this problem correcltly?</li>
  <li>In which cases PerThreadLifetimemanager is useful insted of Transientlifetimemanager?</li>
  </ol>
  
  <p>Thanks!</p>