Проблема с разрешением отчета Crystal

Мы используем функцию экспорта Crystal Report в PDF. Ниже приведен пример кода

Dim rptDoc As New ReportDocument
rptDoc.Load(AppConfig.SitePath + "Form201.rpt")

ExportOptions rptExportOption;
DiskFileDestinationOptions rptFileDestOption = new DiskFileDestinationOptions();
PdfRtfWordFormatOptions rptFormatOption = new PdfRtfWordFormatOptions();
string reportFileName = filePath;
rptFileDestOption.DiskFileName = reportFileName;
rptExportOption = rptDocument.ExportOptions;
rptExportOption.ExportDestinationType = ExportDestinationType.DiskFile;
rptExportOption.ExportFormatType = ExportFormatType.PortableDocFormat;
rptExportOption.ExportDestinationOptions = rptFileDestOption;
rptExportOption.ExportFormatOptions = rptFormatOption;

rptDocument.Export(rptExportOption);

Мы дали разрешение на запись всем во временной папке. И дано разрешение на чтение и выполнение всем на диске C сервера. Обычно это работает нормально, но через неделю или 10 дней мы вдруг начинаем получать ошибку.

Не удалось загрузить отчет.

Неверное имя файла.

в CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() в CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(строковое имя файла, OpenReportMethod openMethod, Int16 parentJob) в CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(строковое имя файла) в Testfile.GeneratePDF(Int32 cmpid)

Это строка, вызывающая ошибку

rptDoc.Load(AppConfig.SitePath + "Form201.rpt")

Когда мы повторно применяем разрешение на чтение и выполнение для всех на диске C сервера, проблема решается.

Укажите, какого разрешения нам не хватает, поскольку эта проблема повторяется каждые 7–10 дней. Любая помощь будет оценена.


person Mania    schedule 07.06.2016    source источник
comment
Это внутреннее приложение? Если это так, обратитесь к системному/веб-администратору, а также об обновлении политик безопасности.   -  person Sami    schedule 08.06.2016
comment
У вас есть другой диск, на который вы можете писать? Даже если это флешка с диском D? Я думаю, что @Sami находится на правильном пути, поскольку ваши разрешения перезаписываются. В какой каталог записывается файл? Сделайте снимок экрана с разрешениями безопасности, а затем проверьте еще раз, когда отчет не может быть записан в папку. Различаются ли разрешения, особенно родительская безопасность.   -  person Sun    schedule 09.06.2016
comment
файл отчета находится на одном из веб-сайтов, например C:\inetpub\vhosts\www.abc.com. мы применили разрешение для всех к временной папке Windows ... и это не удаляется. чтобы заставить Crystal Report работать, нам нужно установить разрешение на чтение на системном диске, таком как диск C в моем случае. Мы не уверены, где еще нам нужно поставить разрешение, которое время от времени удаляется (каждую неделю или около того).   -  person Mania    schedule 10.06.2016


Ответы (1)


Сообщение об ошибке гласит: «Недопустимое имя файла». Вы должны учитывать, что ваш путь может быть искажен.

Какое значение находится в AppConfig.SitePath?

Попробуйте использовать Path.Combine, например:

var reportPath = System.IO.Path.Combine(AppConfig.SitePath, "Form201.rpt");
rptDoc.Load(reportPath);

Это должно гарантировать, что ваш путь сформирован правильно.

person Glenn Ferrie    schedule 07.06.2016
comment
Спасибо за ваше предложение, но в любом случае путь к сайту правильный, иначе он всегда будет выдавать эту ошибку. Но, как я уже сказал, он работает нормально, без каких-либо проблем. Раз в 10 дней вдруг начинаем выдавать ошибку. Таким образом, путь отчета не кажется проблемой. - person Mania; 08.06.2016