我的服务在IIS中运行。我发生了非致命异常,并在启动时登录。
如何将Visual Studio连接到IIS以便它还调试启动?
我知道我可以将visual studio附加到w3wp.exe
进行调试,同时运行它。
答案 0 :(得分:3)
将以下内容添加到您的应用程序的启动代码中:
System.Diagnostics.Debugger.Break();
当此行被命中时,系统将提示您将调试器附加到该进程。有关详细信息,请参阅Debugger.Break。
答案 1 :(得分:3)
如果要进行调试,则必须在Web服务器上安装Remote Debugging tools。确保为正在运行的Visual Studio版本使用正确的版本。
在调试模式下编译项目,确保在“高级预编译设置”中选中“发出调试信息”。
将项目部署到服务器。 Visual Studio中的代码与您部署的代码完全匹配至关重要。不要尝试调试代码中的微小差异(web.config设置差异没问题)。
使用管理员帐户在服务器上运行远程调试工具。你应该看到它说“......等待新的联系”。
在visual studio中,使用Debug菜单中的Attach to Process连接到服务器上的w3wp进程。确保限定符是远程工具正在侦听的server name
:port number
。
在某些情况下,您可能需要单击“附加到进程”窗口中的“选择...”按钮,并仅选择“托管(v4.5,v4.0)”代码类型,而不是让它自动确定代码类型。如果因为没有加载符号而你的断点永远不会被击中,这可能是原因。
提示:将特定的应用程序池分配给IIS应用程序,以便在“附加到进程”窗口中更容易识别。您可能有一堆w3wp.exe进程,您可能不知道要附加哪个进程。
作为实时调试的替代方法,您可以在服务器上运行intellitrace,将跟踪文件带回visual studio并逐步执行代码,就像记录的会话一样。这是涉及powershell的整套其他指令。如果是一个选项,我更喜欢实时调试。
<强>更新强>
要进入Application_Start()
,请回收应用程序池,然后在任何请求进入之前附加Visual Studio,以确保在您(或任何人)发出第一个请求时进行调试。
答案 2 :(得分:2)