【发布时间】:2011-08-19 11:27:30
【问题描述】:
我在 Windows 7 Pro 64 和 IIS 7.5 上运行 Delphi XE,开发一个 ISAPI 应用程序。 IIS 配置正确(包括允许 32 位代码在 ISAPI 进程中运行)。 ISAPI 进程运行正常。
在 Delphi 中,我试图附加到在 localHost 上运行的 ISAPI 进程以逐步执行我的 ISAPI.dll 代码:运行->附加到进程->InetInfo.exe。
我已经在 Windows XP 和 IIS 5 上做了一千次,但在这个新环境中,我无法附加到 ISAPI 进程。尝试附加时,我在 IDE 中收到错误消息:
无法创建进程 - 不支持请求
这花费了我很多时间——我必须为每一行代码抽出调试字符串,运行应用程序,然后查看我的调试字符串,等等。
为什么我不能附加到 ISAPI 进程?这是 IIS 7.5 配置问题吗?可能与 32/64 位问题有关,因为 IIS 是原生 64 位的,而 Delphi 调试器是 32 位的?
【问题讨论】:
-
我怀疑你是对的,它是 64 位 IIS 和 32 位调试器的问题。不过,不知道如何告诉您解决它,除非您可以使用 TD 调试信息和 Visual Studio 做一些事情。
-
不是很有帮助.....但是你不能只在 32 位 VM 中运行 IIS 吗?
-
确保你完全理解在 IIS 6 中首次引入的工作进程隔离模式(当然对于 IIS 7 及更高版本)。那你应该知道这么多年后附加到inetinfo.exe是错误的。
-
@Lex Li - 在我的 XP 开发机器上使用的 IIS 5(正如我在问题中提到的)中的 inetinfo 从来没有任何问题。由于 IIS 6 仅在 Server 2003 上可用,我认为我从未通过 IIS 6 进行过调试,我根本没有提及。如果 IIS 6 中的设计发生了更改,排除了附加到 inetinfo,那是另一回事。那么解决方案是什么?如何连接到运行我的 DLL 的特定进程?进程如何命名? Tnx。
-
@Mikey,我确实在下面提供了一个答案,其中包含指向流程模型的链接。 w3wp.exe 是您应该附加到的那个。
标签: delphi 64-bit iis-7.5 delphi-xe isapi