代码之家  ›  专栏  ›  技术社区  ›  Cary Jensen

Delphi 2007 for.NET中的“无法启动调试…无法附加到ASP.NET工作进程”消息不正确

  •  5
  • Cary Jensen  · 技术社区  · 16 年前

    我看了很久,最后决定把这个问题提出来。我有一些需要维护的应用程序是用Delphi2007 for.NET(ASP.NET2.0)编写的。通常,第一次运行应用程序(使用iis)时,我会得到经典的“无法在web服务器上开始调试”。无法附加到ASP.NET工作进程“消息。我只要再按一次F9(运行),它就会运行。有时候我得试着跑好几次才能跑起来。

    我运行的是64位Windows7(在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大约15秒之后,有时甚至在我点击了一两页(或三页)的web应用程序之后。而且,是的,当delphi进入这种模式时,我可以不调试就运行,一切都很好(除非我真的想调试)。而且,我可以继续尝试在调试器中运行,最终它会正常工作。

    似乎Delphi的.NET调试器以某种方式获得了应用程序无法运行的想法,然后放弃并停止了该进程(正如我所提到的,该进程有时显然正在运行)。

    我知道其他开发人员也看到过这种行为。我的问题是,有人知道如何阻止这种恼人的行为吗?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Mikey    16 年前

    我不记得确切的错误信息,但我相信我至少在过去见过类似的情况。我所做的一切都是在.NET2.0框架上运行一个“修复程序”(通过“控制面板”->“添加/删除程序”)。然后也许在那之后重新启动你的电脑…

        2
  •  0
  •   Cary Jensen    16 年前

    如果你有这个问题,你会继续有这个问题。不过,这里有一个解决办法。

    首先在不调试的情况下运行项目,然后在项目运行后附加到它。要执行此操作,请选择Run Runwithoutdebugging,或按CTRL-SHIFT-F9。

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

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

    显然,由于应用程序已经在运行,所以不管放弃什么并给出错误消息都不涉及。

    在加号上,使用这种方法调试delphi for.net应用程序有一个很好的副作用。一旦运行并发现问题,就可以弹出调试器,查看内部的情况。如果发现要修复的问题,请与进程分离,修复该问题,然后重新编译。您可以让应用程序在IIS中运行。

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

    推荐文章