Response.outputstream.write против Response.BinaryWrite - PullRequest
0 голосов
/ 04 июня 2018

Мы используем приведенный ниже код для отображения PDF-файлов с помощью Response.BinaryWrite.Мы изучаем новые возможности оптимизации работы пользователей.

        Response.Clear();
        Response.ContentType = "application/pdf";

        if (Page.Request!=null && Page.Request.Browser!=null && 
            (!(Page.Request.Browser.Type.Contains("IE") || Page.Request.Browser.Type.Contains("InternetExplorer"))))
        {
            Response.AddHeader("Content-Length", buffer.Length.ToString());
        }

        Response.AddHeader("Content-Encoding", "deflate");
        if (Request.Browser.Browser == "IE" && Request.Browser.MajorVersion < 7)
            Response.AddHeader("Content-Disposition", "attachment; filename=document.pdf");            
        Response.OutputStream.Write(buffer, 0, buffer.Length);//Response.BinaryWrite(buffer);
        Response.End();
        Response.Flush();
        Response.Close();

Я прочитал, что Response.outputstream.write - еще одна опция для рендеринга PDF.Использование Response.outputstream.write будет иметь дополнительное преимущество?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Если вы испытываете задержки рендеринга, вы можете реализовать асинхронный метод и использовать следующий код:

var result = Response.OutputStream.BeginWrite(buffer, 0, BufferedStream.Length, null, null);
Response.OutputStream.EndWrite(result);
0 голосов
/ 04 июня 2018

Нет, это не будет иметь никакого преимущества.Код для BinaryWrite просто вызывает Write для OutputStream, как вы уже делаете:

public void BinaryWrite(byte[] buffer)
{
  this.OutputStream.Write(buffer, 0, buffer.Length);
}

Используя такой инструмент, как DotPeek, вы можете перейти прямо к скомпилированному коду и посмотреть, что он делает. Вот что я сделал в этом случае.DotPeek бесплатен и доступен для JetBrains.

Это может помочь вам исследовать эти вещи самостоятельно, а не гадать, проверять или спрашивать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...