你的方法有限制,因为只能在应用程序启动后才能开始调试。如果您需要从第一个请求开始调试,则这是无用的。以下是正确的做法:
IIS设置:
1) 在IIS上,在默认网站下创建一个新的Web应用程序。
2) 默认网站下的每个应用程序都应该使用相同的应用程序池DefaultAppPool。确保此应用程序池能够运行没有调试的ISAPI应用程序。如果不能使用它来运行ISAPI应用程序,则也无法调试。
应用程序设置 (Delphi IDE):
在Delphi中设置应用程序(任何XE+ IDE具有类似的设置)
1) 以管理员身份运行Delphi。这不是绝对必需的,但可以让很多事情变得更容易并避免很多问题。
2) 在Delphi IDE中,选择Run -> Parameters。根据以下图片,设置Host application和Parameters:
W3WP.exe是IIS工作进程可执行文件,我们将交互式地运行它以调试ISAPI应用程序。请记住,w3wp.exe有两个版本:一个是32位的,在C:\Windows\SysWow64下,另一个是64位的,在C:\Windows\System32下。 您必须使用与应用程序匹配的正确版本。
3) 停止World Wide Web发布服务。您可以从提升的命令提示符中使用"net stop W3SVC",或使用Windows服务控制台。
当W3SVC停止后,只需从Delphi IDE中运行应用程序并从浏览器调用它。应用程序将加载,并且所有断点都将被激活。您可以像其他Delphi应用程序一样进行调试。
我需要调试一个从 Asp.Net Core 6.0 API 调用的 Delphi Xe2 Win32 DLL。
我有一个本地的 IIS 站点,该站点只有一个应用程序池。
将 Delphi xe2 以管理员身份运行。
打开一个 DLL 项目并使用以下参数设置调试
打开任务管理器,然后点击详细信息,在搜索w3wp.exe任务并检查执行任务的用户名,对于我的情况是RzKeyServerWebCore.Local,获取此任务的PID = 18232
回到 Delphi,请单击运行->附加进程,查找相同的 PID 18232,然后单击附加。
向您的EndPoint发出请求,在Delphi中的结果是完整的调试信息