2011-11-26 175 views
1

我正在基于我们已经实现我们的代码的遗留应用程序的Web应用程序(ASP.NET 3.5/C#)上工作。该应用程序托管在装有IIS 6的MS Server 2003的虚拟机上。跟踪Web应用程序

随机发生一些异常,如:“加载此程序集会产生不同的授权”,但未向我们提供有关应用程序中发生的位置/原因的更多信息。 由于这个原因,我们希望跟踪Web应用程序以获取尽可能多的有关其行为的信息。

我们刚刚开始使用“NLog”跟踪用户活动和日志文件中的请求/响应。然而,任何人都可以提出一些进一步的申请,以获得更多信息?

由于部分代码由于遗留应用程序而无法访问,因此避免与代码直接交互的解决方案(例如需要在代码本身中实例化应用程序)将是可取的。

回答

1

您可以尝试在应用程序池进程上使用adplus,并在应用程序抛出异常时生成转储。例如执行以下命令:

ADPlus -crash -iis -o c:\dumps 

将产生IIS的内存转储和当前正在运行的所有MTS/COM +包。默认情况下,它会针对第一次机会异常(可能已被处理的那些)创建小型转储,并在第二次更改异常(未处理的异常)上完全转储。如果你有兴趣只在一个特定的池,可以使用其PID(here是信息如何得到它),然后运行:

ADPlus -crash -p <pid> -o c:\dumps 

获得转储后,您可以将其加载到Visual Studio和尝试调试您的应用程序(请记得正确配置您的符号路径)

+0

+1 - 谢谢你的提示!我将安装在我的系统上,如果能正常工作,请回来接受它。 – Francesco

1

我会建议使用Elmah。它非常酷,使用错误日志记录框架特别适用于asp.net。在那里检查http://code.google.com/p/elmah/

+0

感谢dasheddot您的答案。我们在生产中已经使用Elmah来记录错误。然而,Elmah提供的信息不足以理解这些例外情况。 因此,我正在寻找更具体的东西。 – Francesco