ISAPI Web 应用程序挂起(如果调用 FastReport.PrepareReport)


begin
  try
    Raport.PrepareReport(True);
  except on E:Exception do
    raise ;
  end;
//  if Raport.Engine.Run then
  Raport.Export(frxPDF);
end;

当作为 Isapi dll 运行时,Web 应用程序挂起 o Raport.PrepareReport(true),当将本地应用程序服务器作为.exe应用程序运行时...
该文件夹具有IIS_IUSRS的总控制文件的权限。
为什么会挂?

我经历过如果 ISAPI dll 中存在未经处理的异常,应用程序就会崩溃。您正在处理常规异常 E:异常,但重新引发它以传递给更高级别的处理程序。因此,如果没有上层处理程序,它将转到 IIS,这使得 IIS 使应用程序崩溃,因为从 IIS 的角度来看,存在未处理的异常,并且它不知道如何处理它。

您不应该重新引发 ISAPI 中发生的异常;如果您处于最高处理程序,只需正确处理它。例如,尝试写回 E.message 以进一步调查以了解发生了什么以及首先导致异常的原因。

我有相同的 Web 服务并使用快速报告作为报告生成,它像魅力一样工作但您应该设置此属性

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

确保您永远不要使用 UI 相关命令,如 showMessage 或 MessageDLG 和 ...

问题是 RichEdit 控件,ISAPI fxReport 不支持该控件