【问题标题】:Delphi - ISAPI DLL Application hanging on FastreportDelphi - ISAPI DLL 应用程序挂在 Fastreport 上
【发布时间】:2018-02-08 03:16:03
【问题描述】:

发现这个帖子ISAPI web application hanging if FastReport.PrepareReport is called

它帮助部分解决了我的问题。同样,我已经将Wisiyng 属性转换为False on frxRichView.,因为我要返回base 64 string,我还尝试将加载从StrToStream/LoadFromStream 切换到LoadFromFile。多次访问问题仍然存在,10 个进程中有 2 个可以完成加载我的 Pdf 文件。所有其他请求都会挂起,直到超时。有谁知道我还能做什么?有没有其他方法可以将rtf 格式重新转换为Fastreport 报告谢谢。

我只能使用Selenium 来测试来自客户端的多重请求。

更新:我认为报告中仅包含 TfrxRichView 组件会导致挂起,它甚至不需要包含 rtf 文本。将其替换为memo 所有请求都会得到答复。

更新:从快速报告中得到答案,我希望您的意见。

【问题讨论】:

  • 您使用的是什么 pdf 导出过滤器?
  • 它的 frxPdfExport
  • 您使用的是哪个快速报告版本?你有货源吗?
  • v5.6 但我也尝试过 v6.0.4
  • 它的代码量很大,但我会尝试构建一个示例,所以你有一个想法......

标签: delphi rtf isapi fastreport iis-10


【解决方案1】:

好的, 我也遇到过类似的问题,要找出原因并不容易,但也许你可以在我的考虑之间找到你的解决方案..

1) 堆栈大小
在 IIS 中运行时,您的 ISAPI 只是一个由进程调用的 DLL,您不是主进程,因此您必须注意堆栈维度。 通常,Delphi 应用程序的默认堆栈大小为 1Mb,在 ISAPI DLL 中,您将只有 256Kb 的堆栈。 也许您正面临堆栈溢出异常..它可以解释为什么它不会总是发生但仅在某些情况下发生..

2) 被捕获的异常
一般来说,您在准备报告期间遇到一些错误(也就是处理数据、表达式、变量、公式等的所有工作)可能会导致捕获异常。您可能无法从外部看到它,但代码执行在某处中断,报告准备尚未完成。

3) 消息框和/或标准异常
在 ISAPI 中运行时,您不应向用户界面输出任何内容, 也许消息对话框(或异常)会带来意想不到的行为。

4) 全局变量
你应该避免使用全局变量,因为在 ISAPI 中它们在线程中是通用的

因此,如果您有资源,请调试应用程序。在第一个异常情况下,您应该了解问题出在哪里。 如果您没有资源..查看上面的列表..希望您能找到一些有用的信息。

【讨论】:

    【解决方案2】:

    你有两种方法可以解决这个问题:

    1- 在调试 ISAPI DLL 时尝试重新创建此行为。如果幸运的话,您可以识别出挂起您的应用程序的线程。有时这很难甚至不可能重现。

    2- 如果您有权访问挂起的 ISAPI 应用程序实例,请使用 SysInternals Process Explorer 之类的工具创建一个小型转储文件。您的应用程序必须使用完整的调试符号构建,并且您应该有相应的映射文件。使用从挂起的应用程序中获得的一个(或更多——甚至更好的)转储文件以及映射文件,您可以使用另一种工具 WinDbg 对其进行分析并找出原因。 (有时)WinDbg 可以准确显示挂起整个应用程序的线程以及导致它挂起的代码行。

    如果您从未这样做过,我必须警告您,这种分析几乎是一场赌博……您必须使用几种不同的工具 或者没有文档,在各个地方阅读大量技术信息。最后,有时效果很好,有时却惨败。

    【讨论】:

      【解决方案3】:

      因为调试 ISAPI 并不明显,还因为我希望能够在更多不同的托管解决方案之间轻松切换 - 并且希望更新我的网站即时无需重启网络服务器/服务——我创建了xxm。它有一个到 HTTP 上下文的单一接口,您的 DLL 由 IIS ISAPI 处理程序、HTTP.SYS 处理程序或 Apache httpd 模块加载,或者为了在本地进行调试,您只需将 xxmHttp.exe 设置为主机应用程序即可IIS 不碍事。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-03
        • 1970-01-01
        • 2012-11-05
        • 2011-12-09
        • 2014-06-01
        • 1970-01-01
        相关资源
        最近更新 更多