只是想知道是否有人可以在这里指出正确的方向?
我正在尝试调试已部署的 Web 应用程序,但似乎无法使附件正常工作。
这是场景:
VS2010 安装在我的机器上 - 带有所有源代码。
我的机器上的 IE8 浏览到生产 IIS 服务器上的 ASP.NET 站点(生产站点上的 FWIW .pdb 文件。)
当我将调试器附加到 IE session 并继续浏览站点时,没有断点被击中......所以我不认为我真的在调试站点!??
我猜我需要某种远程调试设置?如果是这种情况,如果有人知道任何帮助的 URL,将不胜感激!
提前致谢!
吉姆
最佳答案
这是一个完整的分步指南,因为有很多分散的信息,并且链接的 Microsoft 文章假设了很多信息。
首先,让我们澄清本指南其余部分中使用的术语:
客户端 是您进行开发的计算机
远程 是代码已部署到并在 IIS 上运行的计算机
您可以在客户端上的以下路径中找到与 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
当该工具启动并运行时,您应该会看到以下应用程序:
调试监视器创建了一个可以远程连接的服务器。如果您使用的是 Windows 计算机,则名称可能是
User@Remote
。记住这个名字,因为你以后会用到它。如果你想直接复制它,你可以去工具>选项,你会看到服务器名称。如果您愿意,您甚至可以将其更改为其他内容。 在 Visual Studio 中,您需要附加到新服务器上的进程。转到“工具”>“附加到进程”或按 Ctrl + Alt + P
User@Remote
),然后按 Enter 键以查看远程计算机上可用进程的列表:或者,如果您收到以下消息,则表示您的防火墙正在阻止客户端和远程设备进行通信。
如果附加失败,但您仍会收到一条消息,指出用户已像这样连接:
那么这意味着问题不在于客户端上的出站规则或远程服务器上的入站规则。问题很可能出在客户端计算机上的入站规则上。
要解决此问题,请在客户端计算机上,转到控制面板 > Windows 防火墙 > 高级设置,这将打开具有高级安全性的 Windows 防火墙。选择入站规则并右键单击以输入新规则:
为规则指定任何名称。根据 this SO question 中的建议,我们将允许所有流量通过任何 Visual Studio 可执行文件,而不是免除特定端口。转到“程序和服务”并选择 Visual Studio 2010 安装的完整文件夹路径:
%ProgramFiles% (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
然后确保该规则仅适用于域内的计算机(确保未选中私有(private)和公共(public))。
幸运的话,当您返回附加进程时,您应该能够进入远程机器。
确保为您的应用程序附加正确类型的代码。您可以在 native (C++ 等)或托管(VB、C# 等)之间进行选择,或者选择自动并让 Visual Studio 决定。
有关加载调试器文件的更多信息,您还可以尝试以下任何资源:
希望此时它已启动并为您工作。现在,您可以捕获对 IIS 托管代码进行的任何调用,并像在开发过程中一样逐步执行它们。
进一步阅读 :
关于c# - 从 VS2010 调试在远程 IIS 服务器上运行的 ASP.NET 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124952/