如何将debugging器附加到IIS而不是ASP.NET Development Server?

我有一个ASP.NET网站,当我按F5时,它会自动附加到ASP.NET开发服务器,我如何附加到IIS工作进程,而不是当我按F5?

打开项目属性,转到Web选项卡并selectIIS的选项。

这实际上启动在IIS中的应用程序的一个实例,并附加debugging器。 如果您只想附加到现有的IIS实例,请select附加到debugging菜单中的进程。

debugging – >附加到进程…

从列表中selectaspnet_wp.exe进程。

如果您运行的是IIS版本5,则过程将是w3wp.exe ,每个应用程序池将会有一个(所以如果您不知道要打哪个应用程序池,则需要附加到所有)。

debugging – >附加到VS菜单的过程。

为了知道要附加哪个w3wp.exe进程,可以在2008服务器上使用以下命令

c:\%systemroot%\system32\inetsrv\appcmd list wp 

而在Windows 2003中是这样的

 c:\%systemroot%\system32\cscript iisapp.vbs 

有关更多信息,请参阅IIS应用程序池PID 。

但是,如果您有权访问任务pipe理器(taskmgr.exe),那么您可以直接看到进程的名称以及进程ID,在大多数情况下,进程的“用户名”列将与应用程序相同池名称(当然,您必须将这些列设置为在任务pipe理器中可见才能查看信息)。

但是请注意,所有的方法都只会显示当前正在运行的进程,这意味着如果您的特定进程已经由于空闲时间而closures,那么您首先要使用该进程来将进程置于列表中。

此外,如果应用程序是“Web Garden”(其具有多个w3wp.exe),则即使在附加到正确的过程之后,仍不能保证断点将被命中,因为到该站点的stream量可能被导向另一个处理。

还要注意的是,如果你连接到一个运行在发布模式下的应用程序,它现在将以debugging模式运行,这意味着例如不会有超时限制(如果你真的想要尝试排查超时错误)。

如果你想附加到一个远程过程这是最佳实践:

  1. 通过打开相关端口或完全禁用防火墙,请确保防火墙没有被阻塞(请记住完成后再打开)。
  2. 您应该在远程计算机上拥有具有pipe理权限的Windows域帐户,或者在远程计算机上拥有与运行VS的本地计算机相同的用户名和密码。
  3. 在已安装VS的计算机上,导航到(Visual Studio安装path)\ Microsoft Visual Studio(当前版本号)\ Common7 \ IDE \ Remote Debugger(远程计算机版),并将该文件夹复制并粘贴到远程计算机或共享文件夹,以便可以从远程机器访问。
  4. 在远程计算机上以与本地计算机相同的用户身份login(请参阅步骤2),然后导航到步骤3的复制或共享文件夹,右键单击“msvsmon.exe”,然后从上下文菜单中select“运行方式pipe理员”。
  5. 远程监控器应该启动并声称它通常以(用户)@(远程机器)的名称或任何其他名称启动服务器。
  6. 在VS中,从菜单中selectdebugging – >附加到过程,将传输保留在“默认”,并为“限定符名称”input步骤5中的名称。
    如果一切正常,这将popup远程机器上的进程列表。

当然这个主题还有很多,为了debugging本地代码,这个过程可能更简单,但是我列出的步骤应该适用于任何情况。

有关更深入的信息,您可以查看http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx或MSDN上以及本网站上的许多post。;

希望这会有所帮助。

转到Web应用程序的属性。 select“开始选项”部分,并从“使用默认Web服务器”更改为“使用自定义服务器”。 在基本url中input“ http:// localhost ”。

(假设VS 2008)

或者,您可以使用Visual Studio 的Attach to IIS插件之一 。

我最喜欢的扩展是VSCommands( VS 2010 – 2012或2013 ,但不是2015)。