如何在实时服务器上调试asp.net应用程序

6
我有一个基于.NET Framework 1.1的旧ASP.NET Web应用程序,已经部署在生产服务器上多年了,现在我只在现场站点上遇到一些问题,我的桌面开发版本正常工作。因此,我想附加远程调试器到现场站点,并监视在生产服务器上发生了什么,但我不知道如何做。
我以前使用过远程调试器,但那是在本地局域网中创建新项目时使用的,源和项目实际上在远程服务器上,我只是从我的桌面连接到该服务器的远程调试器,这很好用。但我不确定如何调试生产服务器上的应用程序。

真的很有帮助了解现场网站遇到的问题 - 可以为突击调试提供关键指导。 - Wyatt Barnett
基本上,实时服务器会突然出现w3wp进程的CPU使用率非常高的情况。我们发现应用程序发送或接收的某些httpwebrequest停止发送或接收,并且有很多CLOSE_WAIT连接,但没有活动连接了。谢谢。 - user167466
2个回答

6

是的,这是可能的,但需要更多步骤。您需要连接到运行网站的IIS工作进程(w3wp.exe)。我没有经常这样做,而且通常尽量避免,因为在连接时无法访问网站。

这里有一篇解释该过程的文章。

http://www.codeproject.com/KB/aspnet/ProcessAttache.aspx

本文基于2.0而非1.1,但仍应该能够让您了解如何操作。我想您需要在生产服务器上安装Visual Studio。
如果这不可行并且您可以访问代码,则还可以尝试在应用程序的某些点记录到文本文件中。我已经成功地使用此方法找到问题,这样您就可以让网站正常运行,然后在确定出现问题后仅检查日志文件。
您可能需要查看免费的日志记录应用程序log4net。
祝你好运。

非常感谢您的帮助。我查看了文章,您是正确的,那不是监视实时网站的最佳方法。我将尝试在可疑代码部分添加日志记录。此外,我也使用DebugDiag获取一些信息,但很难将其与我的代码相关联。 - user167466

6

好的,为什么不尝试在服务器上启用跟踪功能呢?然后您可以在单独的页面中查看所有信息。要在web.config中启用,请按以下方式操作:

<configuration>
   <system.web>
     <trace enabled="true" pageOutput="false" requestLimit="40" 
        localOnly="false"/>
   </system.web>
</configuration>

然后在您的网站上加载trace.axd页面以查看页面级别数据。

非常感谢您的回复。我不确定仅启用跟踪是否足以提供足够的信息来解决一些超时问题,我想知道超时发生的地点和时间,以及它们究竟在等待什么。您知道如何将调试器附加到实时服务器吗?我需要先在实时服务器上安装VS.net 2003组件才能启用调试吗?谢谢。 - user167466

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接