是否可以在不影响服务的所有用户的情况下调试IIS?

时间:2009-11-19 20:27:46

标签: asp.net debugging iis sharepoint-2007

这看起来似乎是一个愚蠢的问题,但我们在共享测试环境中调试IIS时遇到问题,我希望有人可以给我们答案。

我们有一台运行IIS 6和sharepoint 2007的Windows Server 2003.我们正在使用visual studio 2008在服务器上进行本地调试。

当有人附加调试器并逐步执行代码时,我们发现所有用户都受到影响。实质上,Web服务器停止处理来自所有用户的所有请求。

我们的问题是这是否是典型情况并且是可以预期的?或者是否有一些我们可以更改的配置允许调试一个用户的会话,但不会影响另一个用户的会话。

6 个答案:

答案 0 :(得分:4)

Kev走在正确的轨道上。您需要确保要与其他项目分开调试的项目位于其自己的应用程序池中。这会将它隔离到自己的进程,并允许停止/调试该进程,而不会影响可以保留在不同池中的其他应用程序。

<强>设置

  • 开始 - &gt;运行 - &gt; INETMGR
  • 右键单击“应用程序池”
  • 点击新建 - &gt;应用程序池
  • 命名新池
  • 右键单击要隔离的应用程序
  • 单击“属性”
  • 单击“主目录”选项卡
  • 在应用程序池下拉列表中选择新池
  • 点击确定

如果旧流程中有任何请求排队,则在将所有请求转移到新流程之前,可能需要几分钟才能终止。

<强>调试

要确定将调试器附加到w3wp.exe的哪个实例:

  • 开始 - &gt;运行 - &gt; CMD
  • 输入iisapp
  • 可能会提示您注册CScript,如果是,请单击是并再次运行

您可能仍然发现的唯一问题是,如果多个应用程序正在使用aspnet_state服务,如果您还需要调试该过程,则可能会遇到阻塞问题。

链接

答案 1 :(得分:1)

  

“当有人附加调试器时   我们发现,通过代码逐步完成   所有用户都受到影响。在   本质上Web服务器停止处理   所有用户的所有请求。“

这是正常的,一旦将调试器附加到诸如inetinfo.exew3wp.exe的进程并设置断点,每个请求/线程都将被阻塞,直到您允许调试器继续,直到下一个突破点。

答案 2 :(得分:0)

我从来没有找到解决办法。您是否有某些原因无法在每个开发人员的工作站上进行调试?

答案 3 :(得分:0)

在服务器上设置并行项目并尝试使用它。您可以使用debug.mydomain.com然后只使用它进行测试。我个人可以考虑在您的实时服务器上进行调试的唯一原因是,由于硬件或软件配置的原因,您的应用程序的功能会有很大差异。

理想情况下,您希望在尽可能类似的环境中拥有系统的单独服务器/实例,这样您就不必在实时计算机上进行调试。此外,您可能需要考虑将所有错误写入事件日志或至少检查日志,因为asp.net通常会记录在那里。通过这种方式,您可以查看错误的位置,并使用它来帮助您在开发环境中解决问题。

答案 4 :(得分:0)

我相信在visual studio中,您可以设置调试器以仅中断正在调试的进程,而不是所有进程。根据系统的设置方式,YMMV可以设置。

答案 5 :(得分:0)

无法更改AFAIK。但这是为了开发/调试目的而设置单独的Web节点或Web应用程序的常规做法。如果在某些情况下需要知道某些变量的确切值,则可以始终使用调试日志记录。