Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
     }
 }