代码之家  ›  专栏  ›  技术社区  ›  BIDeveloper

从VS2010调试在远程IIS服务器上运行的ASP.NET应用程序

  •  15
  • BIDeveloper  · 技术社区  · 14 年前

    只是想知道是否有人能给我指明正确的方向?

    我正在调试 已部署 Web应用程序,似乎无法使附加工作。 下面是场景:

    VS2010安装在我的计算机上-包含所有源代码。

    IE8在我的机器上浏览到生产IIS服务器上的ASP.NET站点(生产站点上的fwiw.pdb文件)。

    当我将调试器附加到IE会话并继续浏览该站点时,不会命中任何断点…这么有效,我不认为我真的在调试这个网站!???

    我想我需要某种远程调试设置?如果是这样的话,如果有人知道任何帮助的网址,那将是非常感谢!

    事先谢谢!

    吉姆

    2 回复  |  直到 6 年前
        1
  •  9
  •   hunter    14 年前

    这是一篇很好的文章:

    http://msdn.microsoft.com/en-us/library/bt727f1t.aspx

    在远程计算机上安装远程调试组件,并在开始调试时启动远程调试监视器(msvsmon.exe)。
        2
  •  21
  •   KyleMit Steven Vachon    6 年前

    这里有一个完整的分步指南,因为有很多分散的信息,而链接的微软文章假定有很多信息。

    首先,让我们澄清本指南其余部分使用的术语:

    diagram

    顾客 是你开发的电脑吗?
    远程的 在IIS上运行的代码部署到的计算机

    1. 安装msvsmon.exe( ICRO S 对外直接投资 V 等分的 S 工作室 周一 在远程计算机上。
      您可以在客户端上的以下路径找到随Visual Studio一起安装的可执行文件:

      VS 2010: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger\x86 
      VS 2017: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\X64

      当工具启动并运行时,您应该看到以下应用程序:

      new server

      调试监视器创建了一个可以远程连接的服务器。如果您在Windows计算机上,名称可能是 User@Remote . 记住这个名字,因为你以后需要它。如果要直接复制,可以转到“工具”>“选项”,您将看到服务器名称。如果你愿意,你甚至可以把它换成别的东西。

    2. 在这里,您可以尝试使用猎枪方法,看看是否一切正常,但根据您的网络配置,可能会出现一些额外的问题。若要尝试远程调试,请在Visual Studio中打开该项目。这应该是部署在IIS上的完全相同的项目。

      在Visual Studio中,您将希望附加到新服务器上的进程。转到“工具”>“附加到进程”或“点击” Ctrl键 + 中高音 +

      attach to process

    3. 在“附加到进程”对话框中,将限定符从当前计算机的名称更改为新的服务器名称。( 用户@远程 )然后按Enter查看远程计算机上可用进程的列表:

      attach dialog

    4. 如果一切都很快恢复,你的手就很好了。这意味着没有防火墙策略阻止您与远程服务器连接,您可以跳到步骤6。

      或者,如果您收到以下消息,则意味着您的防火墙正在阻止客户端和远程设备进行通信。

      Unable to connect to the Microsoft Visual Studio Remote Debugging Monitor named 'User@Remote'.  The Visual Studio Remote Debugger on the target computer cannot connect back to this computer. A firewall may be preventing communication via DCOM to the local computer. Please see Help for assistance.

    5. 如果您无法连接,根据您的域策略,可能会出现一系列问题。对于正式的防火墙设置,您可以查看Microsoft的 Configure the Windows 7 Firewall for Remote Debugging 但我发现细节不够。

      如果附加失败,但仍会收到一条消息,说明用户已按如下方式连接:

      connected

      这意味着问题不在客户端的出站规则或远程服务器的入站规则上。更可能的是,问题出在客户机上的入站规则上。

      要解决此问题,请在客户端计算机上,转到“控制面板”>“Windows防火墙”>“高级设置”,该设置应打开 高级安全的Windows防火墙 . 选择 入站规则 右击输入 新建规则 :

      new rule

      给规则起任何名字。基于中的建议 this SO question ,而不是免除特定端口,我们将允许任何Visual Studio可执行文件的所有通信通过。转到“程序和服务”,然后选择Visual Studio 2010安装的完整文件夹路径:
      %ProgramFiles% (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe

      然后确保该规则仅适用于域内的计算机(确保未选中“私有”和“公共”)。

      visual studio rule

      如果运气好的话,当你回去连接进程时,你应该能够进入远程机器。

    6. 此时,您应该看到远程机器上所有进程的列表。如果要调试Windows应用程序,只需选择进程的名称。对于ASP.NET,我们希望附加到w3wp.exe(www W 奥克 过程)。如果您在列表中没有看到它,请尝试打开要调试的应用程序的网页来启动服务器。您可以在本地主机上执行此操作,也可以从任何计算机导航到IIS中的地址。

      attach dialog connected

      确保为应用程序附加正确类型的代码。您可以在本机(C++等)或托管(VB、C等)中进行选择,或者选择AutoStudio并让VisualStudio决定。

    7. 如果出现以下错误,我发现使用管理员权限重新打开Visual Studio和msvsmon.exe修复了该问题

      Unable to attach to the process. The Visual Studio Remote Debugger (MSVSMON.EXE) has insufficient privileges to debug this process. To debug this process, launch the remote debugger using 'Run as administrator'. If the remote debugger has been configured to run as a service, ensure that it is running under an account that is a member of the Administrators group.

    8. 您将看到一个安全警告,您可以通过单击接受 附加 :

      security warning

    9. 我遇到的最后一个问题是获取要加载的调试程序文件。您需要确保正在执行的库与当前在Visual Studio中加载的库完全匹配,并且它们在客户端计算机上的解决方案中具有正确的.pdb文件。您可以通过进入调试>Windows>模块或点击来检查加载了哪些模块以及它们从何处加载。 Ctrl键 + 中高音 + U . 有关加载调试器文件的详细信息,还可以尝试以下任何资源:

    希望在这一点上,它能为你工作。现在,您可以捕获任何对您的IIS托管代码的调用,并像在开发过程中那样逐步执行这些调用。

    Proof of Concept

    进一步阅读 :