2014-12-22 5 views
1
begin 
    try 
    Raport.PrepareReport(True); 
    except on E:Exception do 
    raise ; 
    end; 
// if Raport.Engine.Run then 
    Raport.Export(frxPDF); 
end; 

Когда работает как ISAPI DLL веб-приложения вешает о Raport.PrepareReport (истина), при работе с локальным сервером приложений как EXE-приложения оно работает !. ..
В папке разрешены общие файлы управления для IIS_IUSRS.
Почему это будет висит?ISAPI веб-приложение висит, если FastReport.PrepareReport называется

+0

Делая все, что в контексте веб-запроса IIS может быть хлопотно. Вы рассматривали асинхронную обработку, когда генерация отчета выполняется отдельным (сервисным) приложением? – mjn

+0

Я создал службу для создания отчета. Но ... Он тоже зависает при приготовлении предложения (True) .... Возможно, ему нужны некоторые активированные службы Windows ... или ... внутренне указывает на папку (как TempFolder из Windows) ... без прав. Я не могу сгенерировать отчет – NizamUlMulk

ответ

1

проблема была контрольной RichEdit, что не правда поддерживается ISAPI fxReport

+0

Большое спасибо, эта же проблема сводила меня с ума. –

1

Я испытал, если в ISLI-оболочке ISAPI имеется необработанное исключение, приложение отключается. Вы обрабатываете общее исключение E: Exception, но повторно поднимаете его, чтобы перейти к обработчику более высокого уровня. Итак, если нет обработчика верхнего уровня, он переходит в IIS, и это приводит к сбою приложения IIS, поскольку с точки зрения IIS существует необработанное исключение, и он не знает, как с ним справиться.

Вы не должны повторно поднимать исключения, происходящие в ISAPI; если вы находитесь на самом высоком обработчике, просто обработайте его правильно. Попробуйте написать E.message, например, чтобы продолжить исследование, чтобы понять, что произошло, и что вызвало это исключение в первую очередь.

+0

Отладка кода, никогда не поднимайте линию, программа зависает в строке PrepareReport. – NizamUlMulk

+0

Тогда что-то не так с методом PrepareReport. Вы должны проследить его и определить линию, вызывающую исключение. –

+0

PrepareReport находится в файле dcu. У меня нет .pas для отладки ..., но всегда висит там – NizamUlMulk

1

У меня есть один и тот же веб-службы и использовать быстрый отчет, как сгенерировать отчет и работать как шарм , но вы должны установить эти свойства

 FrxRep.ShowProgress := False; 
     FrxRep.ReportOptions.Clear; 
     FrxRep.EngineOptions.SilentMode := True; 
    frxPDFExport1.ShowProgress := False; 
    frxPDFExport1.ShowDialog  := False; 
    frxPDFExport1.OverwritePrompt := False; 

быть уверены, что вы никогда не использовать Ui относительные команды, как ShowMessage или MessageDlg и ...

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

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