IIS7 C#ASP.NET web应用程序中的堆栈溢出

IIS7 C#ASP.NET web应用程序中的堆栈溢出,c#,asp.net-mvc-3,iis-7,stack-overflow,C#,Asp.net Mvc 3,Iis 7,Stack Overflow,我的网站的IIS7工作进程(w3wp.exe)每隔几分钟就会重新启动一次,因为在一个中型应用程序的某个地方发生了堆栈溢出异常 事件查看器不提供有关代码中错误发生位置的任何详细信息 Application: w3wp.exe Framework Version: v4.0.30319 Description: The process was terminated due to stack overflow. 事件查看器中没有堆栈跟踪,无法从中查找错误所在的位置。代码中没有特定的递归函数(afai

我的网站的IIS7工作进程(w3wp.exe)每隔几分钟就会重新启动一次,因为在一个中型应用程序的某个地方发生了堆栈溢出异常

事件查看器不提供有关代码中错误发生位置的任何详细信息

Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to stack overflow.
事件查看器中没有堆栈跟踪,无法从中查找错误所在的位置。代码中没有特定的递归函数(afaik),可能存在间接递归,例如A调用B调用C调用A


如何继续查找错误代码的位置?我无法使用Visual Studio进行调试,因为它只发生在有数百名用户访问网站的生产服务器上。

Visual Studio调试器将捕获它。

听起来像是windbg的工作。使用
adplus
获取崩溃转储:


只有在数百名用户访问网站的生产环境中才会发生这种情况。您可以使用?这需要在Win2008生产服务器上安装Visual Studio。基于每2分钟就会有一个堆栈溢出杀死iis工作进程,我想说,在实时服务器上调试是您最不担心的。您只需执行几分钟,直到抛出异常,然后就可以取消跟踪。我无法想象,如果iis WP每隔几分钟重新启动一次,会给用户造成比现在更多的中断。@Liam要使用远程调试器,您只需要服务器上的远程调试器,而不是Visual Studio,远程调试器是一个不需要安装的小型.net应用程序。不过,您需要从您的VS PC到服务器建立某种VPN或其他网络连接。堆栈溢出异常的常见来源是属性。例如,getter返回getter属性而不是底层变量。在这种情况下,我认为它会立即发生,而不是从统计上发生,并且我能够在开发机器上重现它。我也会假设,我只是指出这一点,作为对您观察到的没有递归函数的评论。不要使用远程调试器。安装VisualStudio。远程调试器的糟糕设计浪费了我一周的时间。例如,您应该在两台机器上都有一个用户名/密码相同的用户进行调试,这在任何地方都没有很好的文档记录。我一直使用远程调试器,它工作得很好。我同意,您可以通过使用相同的用户名和密码跨域进行调试这一事实没有很好的文档记录,但这不是调试器的问题。