我们遇到了一个 .NET 3.5 WebForms 站点的问题,有时我们的错误日志开始填满以下错误消息:
“找到了具有相同 ID 'ctl09' 的多个控件。FindControl 要求控件具有唯一的 ID。”
我对异常知之甚少,因为我在本地调试时从未见过它,也从未在错误日志中很快捕获到它以运行远程调试会话。我知道应用程序池回收解决了这个问题。
这只会影响站点中的单个 [高流量] 页面。奇怪的是,该站点使用了 4.0 之前的 ID 生成逻辑。因此,当页面工作时,整个视图源中没有一个 html 元素不是自动生成的控件 ID 前缀后跟“实际”ID(即 ctl09_someID_someOtherID)。
所以,有两个主要问题,尽管欢迎任何想法:
- 什么情况下会随机停止正确构建控件?
- 除了 Global.asax,我如何捕获此错误并强制控件...重新编译?应用程序池回收?
我很难过。