【问题标题】:Debuggin ISAPI dll in delphi 2006 fails when dll instatiated via COM当通过 COM 实例化 dll 时,在 delphi 2006 中调试 ISAPI dll 失败
【发布时间】:2012-08-22 22:22:56
【问题描述】:

我们有一个在 IIS 中运行的 delphi ISAPI dll Web 应用程序。该应用程序允许通过 ASP 页面可以实例化的 COM 对象进行扩展(com 对象驻留在 ISAPI dll 中)。当我们调试时,一旦调用实例化 COM 对象的 ASP 页面调试失败,就不会再有断点了。

此问题仅在 Windows 7 中出现。在 Windows XP 上调试工作正常。 (问题是我们不能继续在 XP 上开发!)任何关于可能导致此问题的原因的见解将不胜感激。

注意我们使用的是 Delphi 2006

【问题讨论】:

标签: delphi debugging com asp-classic


【解决方案1】:

我记得在 Windows XP 上调试时,我会将隔离级别设置为高,并为 COM+ 系统中的 IIS 自动生成的 ApplicationID 自己启动 dllhost.exe。

在 Windows 7 和新的 IIS 上,此部分已修改,IIS 现在运行自己的 w3wp.exe 进程,这些进程分组在应用程序池中。检查您的 ASP 项目(或 ISAPI 扩展?)的应用程序池的隔离设置和最大进程数,并尝试使用正确的参数自行启动 w3wp.exe 进程或附加到已启动的进程。

【讨论】:

  • 是的,这就是我正在做的,使用 -debug 参数调用 W3WP.exe。而且我可以调试 dll,但只要点击 asp 页面,调试就会停止工作
  • 是 ASP 还是 ASP.Net?如果是后者,则可能是过渡到托管代码会导致 Delphi 调试器出现问题。您确定要将 Delphi 和非 Delphi 混合在一个 Web 应用程序中吗?看看xxm.sf.net 或其他 Delphi+Web 平台。另一种选择可能是专门为您的 Delphi COM DLL 创建一个 COM+ 包,并从 dllhost.exe 托管它,因此它与执行 ASP 的 w3wp.exe 一起运行。
猜你喜欢
  • 2011-01-05
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2016-10-15
  • 2023-03-17
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多