【问题标题】:CodeSite Logging From Delphi ISAPI来自 Delphi ISAPI 的 CodeSite 日志记录
【发布时间】:2011-11-12 13:09:25
【问题描述】:

我有 CodeSite Express,与 Delphi XE Enterprise 捆绑在一起。现在我正在 XE 中开发一个 ISAPI 应用程序(我在 XE 中使用附加到进程进行跟踪和调试 - 工作正常),我想从我的 ISAPI 应用程序中获取一些 CodeSite 消息。

在包含的 CodeSite 帮助中的高级技术中,我发现了这个:

“从服务登录

服务应用程序在独立于桌面的窗口站中运行。但是,默认情况下,CodeSite Dispatcher 在桌面窗口站中运行。因此,用于将 CodeSite 消息传输到 Dispatcher 的默认消息传输机制 wm_CopyData 窗口消息被 Windows 阻止。 Microsoft Windows 不允许窗口消息跨越窗口站边界.....因此,如果我们希望将 CodeSite 消息从服务应用程序发送到 Dispatcher,我们需要使用 TCP 协议连接到 Dispatcher,而不是复制数据。”

问题:

我是否正确假设相同的规则适用于 ISAPI 应用程序?我必须使用 TCP 从 ISAPI 应用程序中获取 CodeSite 消息?

【问题讨论】:

    标签: delphi isapi codesite


    【解决方案1】:

    鉴于 ISAPI 是从 IIS 加载的,并且 IIS 作为服务运行,是的。

    【讨论】:

      【解决方案2】:

      在默认配置中,是的。但还有更多。 我不确定更新的版本,但是在 IIS 6 中,当您选择高隔离级别时,您的 ISAPI dll 是从 COM+ 上的 dllhost.exe 进程运行的。使用组件服务管理工具(以前称为 DCOM 配置),您可以更改“激活”配置以使用当前登录的用户,并且 dllhost.exe 实例将在活动窗口站中运行。 (您甚至可以将 dllhost.exe 作为宿主应用程序启动到 Delphi 调试器,使用 /ProcessID:{} 参数和 COM+ 条目的 guid)

      到目前为止,我在 IIS 7 中看到的是 w3wp.exe 现在加载并运行 ISAPI dll,但我不确定上述内容是否适用。您可以检查应用程序池设置是否有类似的激活设置。

      【讨论】:

        猜你喜欢
        • 2018-01-24
        • 2012-02-08
        • 2012-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-19
        • 2013-06-16
        相关资源
        最近更新 更多