我有一个ASP.NET网站,当我按F5它会自动附加到ASP.NET开发服务器时,当我按F5时,如何附加到IIS工作进程?
调试 - >附加到进程...
从列表中选择aspnet_wp.exe进程.
如果您正在运行IIS>版本5,则该过程将是w3wp.exe,并且每个应用程序池都会有一个(因此,如果您不知道您正在使用哪个应用程序池,则需要附加到所有应用程序池)他们).
打开项目属性,转到Web选项卡并选择IIS选项.
这实际上是在IIS中启动应用程序的实例并附加调试器.如果您只想附加到现有IIS实例,请从调试菜单中选择附加到进程.
从VS菜单调试 - >附加到进程.
要了解要附加到哪个w3wp.exe进程,可以在2008服务器上使用以下命令
c:\%systemroot%\system32\inetsrv\appcmd list wp
虽然在Windows 2003上它是
c:\%systemroot%\system32\cscript iisapp.vbs
有关详细信息,请参阅IIS应用程序池PID.
但是,如果您可以访问任务管理器(taskmgr.exe),则可以直接看到进程的名称以及进程ID,并且在大多数情况下,进程的"用户名"列将与应用程序相同池名称,(当然,您必须将这些列设置为在任务管理器中可见,以便查看信息).
但请注意,所有方法都只显示当前正在运行的进程,这意味着如果您的特定进程由于空闲时间而关闭,则您首先要使用该站点以便将该进程放入列表中.
此外,如果应用程序是"Web Garden"(具有多个w3wp.exe),那么即使在附加到正确的进程之后,仍然无法保证断点将被命中,因为到站点的流量可能会被定向到另一个处理.
另请注意,如果您附加到以发布模式运行的应用程序,它现在将在调试模式下运行,这意味着例如没有超时限制(如果您实际尝试的话,这可能会有点问题)解决超时错误).
如果您想要附加到远程进程,这是最佳做法:
通过打开相关端口或完全禁用防火墙来确保防火墙没有阻塞(只需记住在完成后再次打开它).
您应该在远程计算机上拥有一个具有管理权限的Windows域帐户,或者拥有一个帐户 - 与远程计算机上运行VS的本地计算机具有相同的用户名和密码.
在已安装VS的计算机上导航到(Visual Studio安装路径)\ Microsoft Visual Studio(当前版本号)\ Common7\IDE\Remote Debugger(远程计算机版本),并将此文件夹复制并粘贴到远程计算机或共享此文件夹,以便可以从远程计算机访问它.
在远程计算机上以与本地计算机相同的用户身份登录(请参阅步骤2),然后导航到步骤3的复制或共享文件夹,右键单击"msvsmon.exe",然后从上下文菜单中选择"运行方式"管理员".
远程监视器应该启动并声称它通常以(用户)@(远程机器)或任何其他名称的名称启动服务器.
在VS中,从菜单中选择Debug - > Attach To Process,将传输保留为"Default",对于"Qualifier Name",输入步骤5中的名称.
如果一切正常,将显示远程计算机上的进程列表.
当然,这个主题还有很多,而且为了调试本机代码,这个过程可能更简单,但我在这里列出的步骤应该适用于所有情况.
有关更多信息,您可以查看http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx或MSDN以及此站点上的许多帖子.
希望这会有所帮助.
或者您可以使用Attach to IIS插件之一到Visual Studio.
我的首选扩展是VSCommands(适用于VS 2010 - 2012或2013,但尚未2015)或ReAttach(适用于2017年).
转到Web应用程序的属性.选择"开始选项"部分,然后从"使用默认Web服务器"更改为"使用自定义服务器".在基本URL中输入" http:// localhost ".
(假设VS 2008)