The code basically looks sound - you are more-or-less correctly handling the return value from Read
(if I was being picky, I would say check it for <=0
, but this would not be an expected behavior since you probably have a lock on the file).
The only thing that occurs is: try adding a:
Response.OutputStream.Flush();
and perhaps:
Response.OutputStream.Close();
to make sure that the output stream is flushed.