2011-09-07 22 views
3

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

在附带的CodeSite帮助高级技术,我发现这一点:

“记录从服务

服务应用程序从桌面上的一个单独的窗口站运行然而,默认情况下,的CodeSite调度程序在桌面窗口工作站中运行,因此用于将CodeSite消息传输到Dispatcher的默认消息传输机制(即wm_CopyData窗口消息)被Windows阻止。Microsoft Windows不允许窗口消息跨越窗口站点边界。 ....因此,如果我们希望将CodeSite消息从服务应用程序发送到Dispatcher,我们需要使用TCP协议而不是CopyData连接到分派器。“

问:

上午我的假设,同样的规则也适用于ISAPI应用程序corrent?我必须使用TCP来从CodeForge应用程序中获取CodeSite消息吗?

回答

6

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

3

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

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