title: Response.Flush() throws System.Web.HttpException
body: <p>I have a HttpHandler that I'm using to handle certain images on a client's website. When I'm outputting the image stream to the response object and call Flush occasionally an error is thrown. Here is a codeblock</p>
  
  <pre><code>
  var image = Image.FromStream(memStream);
  if (size > -1) image = ImageResize.ResizeImage(image, size, size, false);
  if (height > -1) image = ImageResize.Crop(image, size, height, ImageResize.AnchorPosition.Center);
  
  context.Response.Clear();
  context.Response.ContentType = contentType;
  context.Response.BufferOutput = true;
  
  image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
  
  context.Response.Flush();
  context.Response.End();
  
  </code></pre>
  
  <p>From what I've read, this exception is caused by a client disconnecting before the process has completed and there is nothing to flush. </p>
  
  <p>Here is an output of my error page</p>
  
  <pre><code>
  System.Web.HttpException: An error occurred while communicating with the remote host. The error code is 0x80070057.
  Generated: Mon, 12 Oct 2009 03:18:24 GMT
  
  System.Web.HttpException: An error occurred while communicating with the remote host. The error code is 0x80070057.
     at System.Web.Hosting.ISAPIWorkerRequestInProcForIIS6.FlushCore(Byte[] status, Byte[] header, Int32 keepConnected, Int32 totalBodySize, Int32 numBodyFragments, IntPtr[] bodyFragments, Int32[] bodyFragmentLengths, Int32 doneWithSession, Int32 finalStatus, Boolean& async)
     at System.Web.Hosting.ISAPIWorkerRequest.FlushCachedResponse(Boolean isFinal)
     at System.Web.Hosting.ISAPIWorkerRequest.FlushResponse(Boolean finalFlush)
     at System.Web.HttpResponse.Flush(Boolean finalFlush)
     at System.Web.HttpResponse.Flush()
     at PineBluff.Core.ImageHandler.ProcessRequest(HttpContext context) in c:\TeamCity\buildAgent\work\79b3c57a060ff42d\src\PineBluff.Core\ImageHandler.cs:line 75
     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
  </code></pre>
  
  <p>context.Response.Flush falls at line 75.</p>
  
  <p>Is there a way to check this before performing the flush without wrapping it in a try/catch block.?</p>