title: Reading the response body in owin middleware
body: <p>I'm trying to get a copy of a response after my MVC controller action has executed but from other questions on here I can't get this code working (even though this appeared to be a well answered problem) ...</p>
  
  <pre><code>public class Startup
  {
     public void Configuration(IAppBuilder app)
     {
       app.Use(async (context, next) =&gt;
       {
          var resultStream = context.Response.Body;
          context.Response.Body = new MemoryStream();
  
          // allow the response to be written in future request lifecycle events
          await next.Invoke();
  
          // fetch the repsonse
          context.Response.Body.Seek(0, SeekOrigin.Begin);
          var headers = context.Response.Headers;
          var body = new StreamReader(context.Response.Body).ReadToEnd();
  
          // ... other code omitted for question clarity
  
          // write the response to the client
          context.Response.Body.Seek(0, SeekOrigin.Begin);
          await context.Response.Body.CopyToAsync(resultStream);
          context.Response.Body = resultStream;
        });
     }
  
     // ... other code omitted for question clarity
  }
  </code></pre>
  
  <p>When I get to the second seek the variable "body" is empty.</p>
  
  <p>Any ideas why this may be the case when the result after this is a page with content ?</p>