Classic.ASP通过COM调用.NET组件

时间:2009-12-08 22:52:56

标签: .net com asp-classic

我有一个在IIS 7(集成模式)下运行的Classic-ASP应用程序,需要调用已正确注册为COM的.NET库。

一切似乎都有效,但即使我在其中放入了几个断点,我也无法调试库。 VS调试器似乎没有破坏就跳过了。

这是我的ASP代码:

Dim sso: Set sso = Server.CreateObject("SecurityPlatform.ClassicASP_SSO")
sso.Initialize()

我可以逐步调试这些行,但似乎无法进入Initialize()。

有任何线索吗?

4 个答案:

答案 0 :(得分:1)

我不确定你为什么不能单步执行,但这是一招:

在托管代码中调用System.Diagnostics.Debugger.Break方法。一旦执行到达此行,就会弹出一个对话框,允许您将VS附加到该行。

答案 1 :(得分:0)

如果这是企业服务/ COM +组件,您可能需要手动将调试器附加到运行COM组件的进程。运行“进程外”的COM +组件默认不会附加调试器。

上次我这样做时,我们必须附加的进程是最后创建的dllhost(通常是最高进程ID)。您可以通过visual studio的调试菜单执行此操作。

答案 2 :(得分:0)

如果您尝试通过COM +调用托管.NET代码,请确保将调试器附加到dllhost.exe而不是w3p.exe(或运行Web应用程序的任何进程...取决于您的IIS版本。)

使用Web服务器时不会执行COM +代码...

答案 3 :(得分:0)

如果您正在执行这些行,那么您将已经连接到调试脚本的过程。但是,要调试.NET组件中的代码,您需要将其附加到调试“托管代码”的过程。您无法从脚本步进到托管组件,因为您无法同时调试脚本和托管代码。

当您附加到w3wp进程时,请确保“Attach To:”框包含“托管代码”。现在您的断点将正常工作,但您将无法执行脚本代码。