我有一个用C#和.Net v4开发的ASP.NET web应用程序。当您登录并离开页面大约15-20分钟时,我收到“堆栈不足以继续安全地执行程序。”“System.Web.UI.Control.LoadRecursive() - 堆栈不足以继续安全地执行程序。
” “ ”“据我所知,您无法尝试捕获.Net中的stackoverflow。我会想象,递归加载网页和活动会话检查导致这个错误(也许是一个不好的编码习惯)。我还添加了屏幕截图,因为我可以从堆栈跟踪中找出它。如果有人帮助我,这将有所帮助。
我有一个用C#和.Net v4开发的ASP.NET web应用程序。当您登录并离开页面大约15-20分钟时,我收到“堆栈不足以继续安全地执行程序。”“System.Web.UI.Control.LoadRecursive() - 堆栈不足以继续安全地执行程序。
” “ ”“据我所知,您无法尝试捕获.Net中的stackoverflow。我会想象,递归加载网页和活动会话检查导致这个错误(也许是一个不好的编码习惯)。我还添加了屏幕截图,因为我可以从堆栈跟踪中找出它。如果有人帮助我,这将有所帮助。
问题是这样的调用堆栈是正确的在栈的末端。
有几件事情来寻找:
.FindControl(string id)
?<asp:Placeholder/>
控件。当您从嵌套控件中引用父代时,它可以是递归的,然后由父代重新引用。
它试图找到什么控制?我会想象你有一个'while','for'或者'foreach'循环,直到遇到这个循环才会结束并运行。 –
这不会引起堆栈溢出。它使用['RuntimeHelpers.EnsureSufficentExecutionStack'](http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.runtimehelpers.ensuresufficientexecutionstack.aspx),它引发'InsufficientExecutionStackException',* not * a 'StackOverflowException'。这个例外可以被捕获。这是测试,以确保有足够的堆栈执行操作,而不会实际用完堆栈。但是,捕获此异常可能不会有帮助,因为可能没有有效的方法来处理它。 – vcsjones
可能发生的情况是'LoadRecursive',一个框架方法,正在使用它来确保正确的堆栈空间。它失败*可能*因为你有非常非常嵌套的ASP.NET控件。 – vcsjones