title: Multiple Calls to HttpContent ReadAsAsync
body: <p>Using Web API 2.2, suppose I want to read from <code>HttpContent</code> twice, each time as a different type.</p>
  
  <pre><code>await httpContent.LoadIntoBufferAsync(); //necessary to buffer content for multiple reads
  var X = await httpContent.ReadAsAsync&lt;T&gt;(); //read as first type
  var Y = await httpContent.ReadAsAsync&lt;Dictionary&lt;string, object&gt;&gt;(); //read as second type
  </code></pre>
  
  <p>When I run the above code, <code>X</code> is a non-null instance of <code>T</code> while <code>Y</code> is null.  If I switch the order, <code>Y</code> will be a non-null dictionary while <code>X</code> will be null.  In other words, the second and subsequent calls to <code>ReadAsAsync</code> will always return null unless they're called with the same generic type parameter.  Independently, either call to <code>ReadAsAsync</code> works as expected (even when needlessly calling <code>LoadIntoBufferAsync</code>). </p>
  
  <p>This is unexpected to me - it seems that I should be able to read buffered content as differing types as many times as I want. If I add another line:</p>
  
  <pre><code>var Z = await httpContent.ReadAsString();
  </code></pre>
  
  <p>The result is <code>Z</code> will be a non-null string, no matter the order of assignment to <code>X, Y, Z</code>.</p>
  
  <p>So how come this happens, and why can't I read from <code>HttpContent</code> using <code>ReadAsAsync</code> with multiple types?</p>