[英]How to debug startup exceptions with service hosted in IIS?
我在IIS中运行我的服务。 我发生了非致命异常并在启动时登录。
如何将Visual Studio连接到IIS以便它还可以调试启动?
我知道我可以将visual studio连接到w3wp.exe
以便在运行时进行调试。
将以下内容添加到应用程序的启动代码中:
System.Diagnostics.Debugger.Break();
命中此行时,系统将提示您将调试程序附加到该进程。 有关更多详细信息,请参阅Debugger.Break 。
如果要进行调试,则必须在Web服务器上安装远程调试工具 。 确保为正在运行的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,以确保在您(或任何人)发出第一个请求时进行调试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.