什么系统条件可能导致“无法找到id为'xxx'的控件”?

时间:2011-11-04 15:31:12

标签: asp.net dotnetnuke

昨晚,我们的一位用户发现了一个网站问题,该网站在5个月内没有进行编码更改:

  

发生错误,因为ID为'xxx'的控件无法执行   找到位置或不同的控件后分配给相同的ID   回发。如果未分配ID,请显式设置ID属性   用于引发回发事件的控件以避免此错误。

我想知道什么条件可能导致此错误发生或者它是否必须是代码错误?例如低内存,紧张的CPU等?

引用的.ascx文件明确指定了一个id。

堆栈跟踪:

  

DotNetNuke.Services.Exceptions.PageLoadException:错误有   因为带有id的控件而发生   'dnn $ ctr387 $ Dispatch $ Default $ rptToDos $ ctl00 $ ctl00'不可能   找到位置或不同的控件后分配给相同的ID   回发。如果未分配ID,请显式设置ID属性   引发回发事件的控件以避免此错误。 --->   System.Web.HttpException:由于控件带有错误,因此发生错误   id'dnn $ ctr387 $ Dispatch $ Default $ rptToDos $ ctl00 $ ctl00'不可能   找到位置或不同的控件后分配给相同的ID   回发。如果未分配ID,请显式设置ID属性   引发回发事件的控件以避免此错误。在   System.Web.UI.Page.ProcessPostData(NameValueCollection postData,   System.Web.UI.Page.ProcessRequestMain的布尔值fBeforeLoad(布尔值   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   ---内部异常堆栈跟踪结束---

3 个答案:

答案 0 :(得分:2)

我解决这个问题的方法;

为所有控件分配唯一ID值,例如“Label”,“Button”,“Table”,“Div”等。 (但不包括“tr”和“td”)

答案 1 :(得分:1)

嘿戴夫回收应用程序池修复了吗?

我不确定它是什么,但我偶尔会遇到一些第三方dnn模块。我记得最后一个是一些Ajax旋转器。将应用程序池设置为按时间间隔回收是一个临时修复,但我最终将模块换出。不确定它发生了什么。

答案 2 :(得分:0)

某些东西必须改变。更改可能不在该代码中,但在某处发生了某些变化。它可以是从IIS设置或web.config设置到升级或安装的任何内容,但最近该服务器上的某些内容发生了变化。根据我的经验,代码并不是恶意的,它不会让我感到不安并决定停止工作;)

我将验证IIS配置并检查web.config,并查看事件日志以查看最近是否在服务器上进行了任何维护。