title: ActionResult<FileResult> doesn't work as expected
body: <p>I'm using ASP.NET Core 2.1 ActionResult&lt;T&gt; to return a file from controller:</p>
  
  <pre><code>[HttpGet]
  public ActionResult&lt;FileResult&gt; Download()
  {
      var someBinaryFile = "somebinaryfilepath";
      return File(new FileStream(firstExe, FileMode.Open, FileAccess.Read, FileShare.Read), System.Net.Mime.MediaTypeNames.Application.Octet, true);
  }
  </code></pre>
  
  <p>But it returns incomplete json instead of starting file download:</p>
  
  <pre><code>{"fileStream":{"handle":{"value":2676},"canRead":true,"canWrite":false,"safeFileHandle":
  {"isInvalid":false,"isClosed":false},"name":"somebinaryfilepath","isAsync":false,"length":952320,"position":0,"canSeek":true,"canTimeout":false
  </code></pre>
  
  <p>Chrome devtools indicates request status as "(failed)" with tooltip "net::ERR_SPDY_PROTOCOL_ERROR"</p>
  
  <p>If I change the code so it returns a FileContentResult then status turns to "200 ok" but still json is written instead of file download:</p>
  
  <pre><code>{"fileContents": "somebinaryfilecontent","contentType":"application/octet-stream","fileDownloadName":"","lastModified":null,"entityTag":null,"enableRangeProcessing":true}
  </code></pre>
  
  <p>If I change method signature to </p>
  
  <pre><code>public FileResult Download()
  </code></pre>
  
  <p>Or to</p>
  
  <pre><code>public IActionResult Download()
  </code></pre>
  
  <p>Then file download starts with both FileResult implementations.</p>
  
  <p>How could I use ActionResult&lt;T&gt; to download file? Am I missing something or is it really some kind of bug?</p>