我有一个在IIS 7(集成模式)下运行的Classic-ASP应用程序,需要调用已正确注册为COM的.NET库。
一切似乎都有效,但即使我在其中放入了几个断点,我也无法调试库。 VS调试器似乎没有破坏就跳过了。
这是我的ASP代码:
Dim sso: Set sso = Server.CreateObject("SecurityPlatform.ClassicASP_SSO")
sso.Initialize()
我可以逐步调试这些行,但似乎无法进入Initialize()。
有任何线索吗?
答案 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:”框包含“托管代码”。现在您的断点将正常工作,但您将无法执行脚本代码。