Delphi 2007 for .NET中的"无法启动调试...无法附加到ASP.NET辅助进程"消息

Car*_*sen 5 asp.net delphi delphi.net delphi-2007

我已经看了很久了,最后决定把问题放在这里.我有一些我需要维护的应用程序是用Delphi 2007 for .NET(ASP.NET 2.0)编写的.通常,我第一次运行应用程序(使用IIS)时,我得到了经典的"无法在Web服务器上启动调试.无法附加到ASP.NET工作进程"消息.我只需按F9(运行)再次运行.有时我必须尝试运行几次才能实际运行.

我正在运行Windows 7 64位(并且在Vista 64位上看到了相同的效果).我确实为ASP.NET配置了IIS,并且我的Web.config文件中有以下代码.

  <system.webServer>
      <modules>
         <add name="DbgConnect" type="Borland.DbkAsp.DbkConnModule,Borland.dbkasp,Version=10.5.0.0,
           Culture=neutral, PublicKeyToken=b0524c541232aae7" preCondition="managedHandler" />
      </modules>
      <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

关键是我最终可以在调试器中运行应用程序,有时甚至是第一次尝试.很多时候,当我遇到故障时,它会在我按下Run后大约15秒左右发生,有时甚至在我点击一两页(或三个)Web应用程序之后.并且,是的,当Delphi进入这种模式时,我可以简单地运行而无需调试,一切都很好(除非我真的想调试).并且,我可以继续尝试在调试器中运行,最终它将正常工作.

似乎Delphi的.NET调试器在某种程度上得到了应用程序无法运行的想法,然后放弃并停止进程(正如我所提到的那样,有时候显然正在运行).

我知道其他开发者也看到了这种行为.我的问题是,有谁知道如何阻止这种烦人的行为?

Car*_*sen 0

如果您遇到此问题,您将继续遇到此问题。不过,这里有一个解决方法。

首先运行您的项目而不进行调试,然后在项目运行后附加到它。为此,请选择“运行”|“ 运行而不调试,或按 Ctrl-Shift-F9。

应用程序启动并运行后,并且您希望调试器的服务可用,请选择“运行”|“调试器”。附加到进程。在“附加到进程”对话框中,将“调试器”下拉列表设置为“CodeGear .NET 调试器”。IIS 现在将出现在“正在运行的进程”列表框中。在我的机器上,它显示为 w3wp.exe。取消选中“附加后暂停”复选框,然后单击“附加”。(第一次使用“附加到进程”对话框后,将默认为.NET调试器,并且不会选中“附加后暂停”。)

您现在正在启用调试器的情况下运行。如果遇到断点,或者遇到异常,或者选择 Run | 程序暂停,调试器将被加载。如果要禁用调试器而不关闭应用程序,请选择“运行”|“调试器”。从程序中分离。

显然,由于应用程序已经在运行,因此不涉及放弃并给出错误消息的任何内容。

更重要的是,使用这种方法调试 Delphi for .NET 应用程序有一个很好的副作用。一旦运行并发现问题,您可以弹出调试器并查看内部发生了什么。如果发现需要修复的问题,请从进程中分离出来,修复问题,然后重新编译。您可以让应用程序在 IIS 中运行。

重新编译项目后,您使用 IIS 在应用程序中点击的下一个页面将导致加载更新的程序。如果您再次需要调试器,只需附加到 IIS 进程即可。换句话说,您可以调试、修复、重新编译、调试、修复、重新编译...,而无需关闭浏览器中的应用程序。