IIS下的堆栈溢出异常:我可以给出一个更好的错误消息吗

本文关键字:一个 错误 消息 更好 栈溢出 堆栈 异常 我可以 IIS | 更新日期: 2023-09-27 18:26:51

我们有一个在IIS下运行的服务,它可能会因堆栈溢出而崩溃。然而,从事件日志中看不出发生了什么。我看到的都是

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: clr.dll, version: 4.0.30319.18444, time stamp: 0x52717f9a

A process serving application pool 'x' suffered a fatal communication error with the
Windows Process Activation Service. The data field contains the error number.

我们对如何修复stackoverflow有合理的想法(将一些递归方法转换为迭代方法)。但是,是否有某种方法可以将stackoverflow记录到事件日志中?

我知道您无法在.Net中捕获堆栈流量,但IIS可能会处理此问题。例如,如果我运行一个带有精心设计的stackoverflow的控制台应用程序,我会得到

Process is terminated due to StackOverflowException.

这是清楚的。

此外,快速故障保护似乎没有发挥作用:"最大故障"设置为5,它似乎会不断重新启动。

IIS下的堆栈溢出异常:我可以给出一个更好的错误消息吗

使用msft中的调试诊断。可以将其配置为在出现堆栈溢出时创建进程转储。然后,您可以将转储加载到windbg中,并获取导致溢出的堆栈。Tess在她的博客上有很多关于如何做到这一点的信息,包括培训课程http://blogs.msdn.com/b/tess/

相关文章: