Получение исключения ReadTimeOut при возврате PDF из контроллера для просмотра - PullRequest
0 голосов
/ 07 октября 2018

Я хочу скачать pdf, когда пользователь нажимает кнопку печати.

Мой метод контроллера:

[System.Web.Http.HttpGet]
        public FileStreamResult CreatePDF()
        {
            MemoryStream workStream = new MemoryStream();
            Document document = new Document();
            PdfWriter.GetInstance(document, workStream).CloseStream = false;

            document.Open();
            document.Add(new Paragraph("Hello World"));
            document.Add(new Paragraph(DateTime.Now.ToString()));
            document.Close();

            byte[] byteInfo = workStream.ToArray();
            workStream.Write(byteInfo, 0, byteInfo.Length);
            workStream.Position = 0;

            return new FileStreamResult(workStream, "application/pdf");
        }

И вот как я это называю из вида:

 $('#print').click(function (evt) {
                window.location.href = "/api/pdfdownload/createpdf";
            });

При нажатии кнопки печати появляется следующая ошибка:

Типу ObjectContent`1 не удалось сериализовать тело ответа для типа содержимого 'application / json;кодировка = UTF-8' .System.InvalidOperationException Произошла ошибка.Ошибка при получении значения из ReadTimeout в System.IO.MemoryStream.Исключение Newtonsoft.Json.JsonSerializationException в Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue (Цель объекта) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues ​​(JsonWriter - пишущий объект, значение объекта, член объекта, JractConton объекта, JractConton объекта, JractConserver, JControl_Control_Control) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (писатель JsonWriter, значение объекта, контракт JsonObjectContract, член JsonProperty, JsonContainerContract collectionContract, контейнерное свойство JsonProtainty, значение Newtonsoft.Jont.Член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (Средство записи JsonWriter, Значение объекта, контракт JsonObjectContract, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (писатель JsonWriter, значение объекта, JsonContract значениеContract, контейнер JsonProperty, контейнер JsonContainer.riter.riter.Werty.JeriteWerialServer.JerverJerialServer.JerverJerialServerJerialServerJerialSterзначение, Тип objectType) в Newtonsoft.Json.JsonSerializer.SerializeInternal (JsonWriter jsonWriter, Значение объекта, Тип objectType) в System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream (Тип типа, Значение объекта, Поток writeStream, Кодирование системы в действующей кодировке).Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream (Тип типа, Значение объекта, Поток writeStream, Кодировка эффективноеEncoding) в System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream (Тип типа, Значение объекта, Поток writeStream System Attent) atttp.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync (Тип типа, Значение объекта, Поток writeStream, Содержимое HttpContent, TransportContext transportContext, CancellationToken cancellationToken) --- Конец трассировки стека из предыдущего расположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext () Произошла ошибка.Тайм-ауты не поддерживаются в этом потоке.System.InvalidOperationException в System.IO.Stream.get_ReadTimeout () в GetReadTimeout (Object) в Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue (Object target)

Я просто не понимаю, что означает это исключение вэтот контекст.Буду признателен за вашу помощь.

1 Ответ

0 голосов
/ 07 октября 2018

Это означает, что не удалось сериализовать ваш объект типа MemoryStream в JSON:

Типу 'ObjectContent`1' не удалось сериализовать тело ответа для тип контента 'application / json;кодировка = UTF-8' .System.InvalidOperationException Произошла ошибка.Ошибка при получении значения из ReadTimeout на 'System.IO.MemoryStream'.Newtonsoft.Json.JsonSerializationException ...

Я предполагаю, что вы пытаетесь, возможно, умышленно, а может и нет, сериализовать MemoryStream в JSON, что не так уж неожиданно, как выимеют дело с файлами PDF, а вы не можете этого сделать.MemoryStream содержит байты и не может быть сериализован как JSON.

Я бы посоветовал вам посмотреть этот пост с форумов asp.net, но без дополнительной информации, это все, что можно произвести.

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