5

看了很久,终于决定把这个问题放在这里。我有一些需要维护的应用程序是用 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 后大约 15 秒左右发生,有时甚至在我点击 Web 应用程序的一两个(或三个)页面之后。而且,是的,当 Delphi 进入这种模式时,我可以简单地运行而无需调试,一切都很好(除非我真的想调试)。而且,我可以继续尝试在调试器中运行,最终它会正常工作。

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

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

4

2 回答 2

0

我不记得确切的错误信息,但我相信我在过去看到过至少与此类似的东西。我所做的只是在 .NET 2.0 Framework 上运行“修复”(通过控制面板 --> 添加/删除程序)。然后也许在那之后重新启动您的计算机......

于 2010-02-12T18:39:12.310 回答
0

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

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

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

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

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

此外,使用这种方法调试 Delphi for .NET 应用程序还有一个很好的副作用。一旦你运行并发现问题,你可以进入调试器,看看里面发生了什么。如果您发现要修复的问题,请从进程中分离,修复问题并重新编译。您可以让您的应用程序在 IIS 中运行。

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

于 2010-03-03T16:58:49.350 回答