protected virtual IAsyncResult ProcessRequestAsyncInternal(HttpContextWrapper context, AsyncCallback cb, object extraData) { Blob blob = (Blob)null; bool flag = this.ProccessBlobRequest((HttpContextBase)context, out blob); if (blob != null) { context.Response.ContentType = MimeMapping.GetMimeMapping(blob.ID.LocalPath); if (blob is FileBlob) { this.TransmitFile((HttpContextBase)context, ((FileBlob)blob).FilePath); } else { Stream stream = blob.OpenRead(); if (stream.CanSeek) { return(this.BeginTransmitStream((HttpContextBase)context, stream, (AsyncCallback)(r => this.DisposeOnCallback(r, cb, (IDisposable)stream)), (object)stream)); } try { this.TransmitStream((HttpContextBase)context, stream); } finally { stream.Dispose(); } } } AsyncResult asyncResult = new AsyncResult(cb, (object)flag); asyncResult.SetCompleted(); return((IAsyncResult)asyncResult); }
private void DownloadBlobData(HttpContextBase context, Blob blob) { context.Response.ContentType = MimeMapping.GetMimeMapping(blob.ID.LocalPath); if (blob is FileBlob) { this.TransmitFile(context, ((FileBlob)blob).FilePath); } else { using (Stream source = blob.OpenRead()) this.TransmitStream(context, source); } }