是否可以调试不是从Visual Studio中启动的ASP.NET Web应用程序?

Ben*_*ack 10 .net asp.net iis debugging visual-studio-2010

从Visual Studio(Casini)中启动的默认ASP.NET Web服务器在我的开发机器上有点小错误,因此我喜欢在我的开发机器上发布到本地IIS实例并查看那里的Web应用程序.但是,当我以这种方式启动应用程序时,我不会自动进入"调试模式".

我知道VS 2010有一个"附加到进程"调试功能,但我不确定如何使用它.要从Visual Studio中调试本地IIS ASP.NET Web应用程序,我需要做什么?特别:

  • 我需要在Web应用程序的配置中更改哪些设置?
  • 我需要更改哪些"打包/发布设置"?
  • 在IIS中我需要改变什么吗?
  • 在"附加到处理"屏幕中,我需要做些什么特别的事情吗?

背景信息:我在Windows XP SP3上使用IIS 5.1和.NET 4.0运行Visual Studio 2010.


附加信息:

我应该补充一点,我已经尝试附加到aspnet_wp.exe,但是当我进入一个我知道其中有断点的页面时,当我将鼠标悬停在"空心圆"断点上时,我收到以下消息:

断点当前不会被击中.没有为此文档加载任何符号.

Chr*_*sic 5

你需要做的是使用attach来处理和定位aspnet_wp.exe.它可能是w3wp.exe,具体取决于操作系统的风格.我曾经有一个宏来做这个,但它在VS2008后停止工作.


Ben*_*ack 4

我从未在 Visual Studio 中使用 F5 让它工作,即使它被设置为部署到本地 IIS 服务器。我不确定问题到底是什么,但我最终能够让它以更加“手动”的方式工作。让它发挥作用的一个重要部分是确保您生成调试符号并将它们部署到您的网站。以下是我最终让它发挥作用所采取的步骤:

  1. 在本地硬盘上为您的应用程序创建一个新文件夹,该文件夹将用于您的 Web 应用程序。
  2. 在 IIS 中手动创建一个新的虚拟目录,指向您创建的文件夹。
    • 如果您使用的是 .NET 4.0 Web 应用程序,请确保 IIS 中的网站属性或虚拟目录属性设置为使用 ASP.NET 4.0。
  3. 在 VS 2010 中,右键单击您的 Web 项目,然后单击“发布”。使用以下设置:
    • 发布方式:Web部署
    • 服务网址:http://localhost
    • 站点/应用程序:IIS Web Site Name/Virtual Directory
      • 您需要指定 IIS 网站名称,后跟刚刚指定的虚拟目录的名称。网站的默认名称通常只是Default Web Site。例如,如果您将虚拟目录命名为MySolution.MyProject,则可以将Default Web Site/MySolution.MyProject指定 为站点/应用程序。
    • 在目标上标记为 IIS 应用程序:我未选中此选项。
    • 在目标上保留额外的文件(不要删除):我目前未选中此选项。
  4. 在 VS 2010 中,右键单击您的 Web 项目并选择“属性”。使用以下设置:
    • 编译选项卡中:
      • 单击“高级编译选项...”按钮(我使用的是 VB.NET;在 C# 中可能略有不同)。
      • 确保“生成调试信息”设置为Full。(还有一个pdb-only选项,我没有尝试过。这也可能有效)。
    • 网络选项卡中:
      • 在Servers下,选择Use Custom Web Server并指定新应用程序的地址;例如:http://localhost/VirtualDirectory
      • 注意:由于我最终没有使用 F5 调试应用程序,因此我不确定是否需要执行此步骤。
    • 打包/发布 Web选项卡中:
      • 您应该能够使用“仅运行此应用程序所需的文件”设置来部署要部署的项目...。
      • 确保排除生成的调试符号未选中。
        • 注意:出于安全目的,除非绝对必要,否则您可能不希望在生产环境中部署调试信息。

完成上述操作后,您应该准备好部署应用程序以便对其进行调试。以下是我用于部署和随后调试应用程序的步骤:

  1. 右键单击您的 Web 项目,然后单击Publish
    • 确保您的设置仍然是上面第 3 步中定义的。
    • 单击发布按钮。这将根据当前的构建配置自动构建应用程序并将其发布到指定的 Web 主机。
  2. 继续导航到 Web 应用程序中的某一页面,以确保应用程序启动。
  3. 在 VS 2010 中,单击“调试”菜单并选择“附加到进程”。选择正在运行的 ASP.NET 进程(在 Windows XP 中为aspnet_wp.exe),然后单击Attach
  4. 现在,您应该能够向代码添加断点,当您从浏览器导航到 Web 应用程序中的各个页面时,这些断点将会触发。

虽然此方法效果很好,但请记住,它不仅仅附加到您的本地开发环境。如果另一台计算机上的另一个用户要访问该 Web 应用程序,我相信只要您正在调试该进程,断点仍然会触发。