字面来,我的网站已经非常间歇性地抛出以下异常:
Multiple controls with the same ID 'ctl00$ctl00$ctl34' were found. Trace requires that controls have unique IDs.
at System.Web.TraceContext.AddNewControl(String id, String parentId, String type, Int32 viewStateSize, Int32 controlStateSize)
at System.Web.UI.Control.BuildProfileTree(String parentId, Boolean calcViewState)
.... etc (entire stack trace is within System.Web namespace)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
有时用户会去到一个页面这个异常将被抛出 - 它发生在不同的页面上,并显示不同的控制ID。通常,重新加载页面将工作。其他时候,在修复之前,例外情况会持续几次刷新。
现在我知道了这个错误,当你添加动态控件到一个页面,通常会出现和你不小心使用了一个命名容器内相同的ID,所以我理解错误的意思。
但在我的网站上,我没有添加动态控件。至少不是我所知道的。
我正在运行Umbraco,Telerik和Peter Blum等第三方组件,他们几乎可以肯定地在控制树上动态地添加控件,但正如我所说,这个错误已经存在多年了,所有这些模块的版本。
异常的间歇性暗示某种多线程计时问题,或使用一个随机数的地方。谁知道...我在我的代码中找不到原因。
所以我的问题是 - 我怎么能去调试这个问题,因为整个堆栈跟踪是.NET框架内?