2011-09-21 1 views
0

У меня есть вспомогательные функции в библиотеке классов, которая создает и обслуживает пользовательские PDF:Response.BinaryWrite() работает на одной странице, а не другой

byte[] file = GetPdfBytesFromHtmlString(htmlCodeToConvert); 

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.Clear(); 
response.AddHeader("Content-Type", "binary/octet-stream"); 
response.AddHeader("Content-Disposition", "attachment; filename=" + filename + "; size=" + file.Length.ToString()); 
response.Flush(); 
response.BinaryWrite(downloadBytes); 
response.Flush(); 
response.End(); 

Когда этот код выполняется на одной странице, все работает , Другая страница в основном идентична, единственная разница заключается в том, что вывод HTML, который будет записан в PDF, который я проверил, работает правильно. Однако ничего не происходит. Я прошел через код, он просто идет веселым способом, но браузер не запрашивает загрузку.

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

+1

«Почти идентичный» имеет подозрительный вид «не идентичен». –

+0

Являются ли данные в нерабочей версии фактически бинарными данными (например, предварительно подготовленным pdf) или это текстовые данные, которые вы просто пытаетесь записать с помощью 'BinaryWrite'? –

+0

«Подозрительный» правильный. См. Мой ответ ниже. –

ответ

1

Мне очень не нравится отвечать на свой вопрос, потому что это означает, что я не делал достаточного исследования, прежде чем задавать его. Тем не менее, я просмотрел его и понял, что тестировал только в Firefox. Запустив его в IE, вы обнаружили ошибку сценария, в которой содержался текст «Ошибка синтаксического анализа вблизи«% PDF - 1.4% », который я видел во время поиска, но не отслеживал.

Проблема заключается в том, что страница не работает использует панель обновления AJAX, которая не была реализована, когда я заявлял, что код идентичен. Код кнопки экспорта экспорта есть, но разметка отсутствует.

Второй ответ в this post содержит дополнительную информацию и обходное решение .

0

Ваш массив байт, который вы создаете, называется файлом в коде, но вы binarywrite 'downloadbytes' - это проблема?

+0

Моя ошибка, я изменил имя переменной для ясности, но не изменил ее везде. –

0

Если проблема связана с панелью обновления, все, что вам нужно сделать, это добавить полный триггер обратной связи для элемента управления, вызывающего функцию.

 Смежные вопросы

  • Нет связанных вопросов^_^