Отчет SSRS поврежден при записи в файл с помощью WriteAllBytes C # - PullRequest
0 голосов
/ 29 ноября 2011

У нас есть процесс, в котором службы отчетов SQL Server создают файл pdf через

ReportExecutionService.Render 

из данных в базе данных. Затем мы сохраняем байтовый массив, который Render возвращает в базу данных. Позже я получаю байтовый массив и делаю

File.WriteAllBytes

записать его на диск, прежде чем прикреплять его к электронному письму и отправлять. Проблема, с которой я сталкиваюсь, заключается в том, что после записи файла на диск он как-то поврежден. Я не уверен, что посмотреть, кто-нибудь может помочь?

Спасибо

EDIT:

Я могу записать файл из SSRS на диск перед сохранением байтового массива в базу данных, и я могу просмотреть это прекрасно.

Ответы [ 2 ]

0 голосов
/ 26 октября 2014

Не уверен, если это ваша проблема или нет, но если сам файл PDF поврежден, вы можете посмотреть, как он записывается. Если Windows Preview может просматривать PDF, а Adobe - нет, это может быть связано с тем фактом, что Adobe ожидает% PDF в первых 1024 байтах файла (в противном случае он будет считать его поврежденным).

0 голосов
/ 29 ноября 2011

Если вы работаете с byte[], возвращаемым при рендеринге, то все в порядке, но если однажды вы запишите это в БД и прочитаете ее обратно, у вас возникнут проблемы, правильно?

Почему бы вам не сравнить массив, записанный в БД, с тем, который вы получили, чтобы найти проблему? Затем начните изучать процедуры записи и чтения вашей БД и, наконец, хранилище БД.

Я сделал подобные вещи без проблем, например, перенес результаты вызовов служб Reporting Services в поток байтов и прикрепил их непосредственно к электронному письму, используя поток памяти и файл на диске. Таким образом, основы этого звука и должны работать.

...