2010-05-26 2 views
0

У нас проблема с .NET 3.5 WebForms сайт в котором иногда наши журналы ошибок начинают заполнение со следующим сообщением об ошибке:время выполнения HttpException затрагивает только одну страницу/UserControl

«Несколько элементов управления с тем же идентификатором ' ctl09 ". FindControl требует, чтобы элементы управления имели уникальные идентификаторы."

Я знаю очень мало об исключении, поскольку я никогда не видел его во время отладки локально и никогда не попадал в журналы ошибок достаточно быстро, чтобы запускать сеанс удаленной отладки. Я знаю, что повторная обработка пула приложений устраняет проблему.

Это влияет только на одну страницу [большого трафика] на сайте. Странно то, что сайт использует логику генерации пред-4.0. Таким образом, когда страница работает, во всем источнике представления нет элемента html, который не является префиксом автоматического генерируемого идентификатора управления, за которым следуют «фактические» идентификаторы (т. Е. Ctl09_someID_someOtherID).

Итак, 2 основные вопросы, хотя любые идеи приветствуются:

  1. Что бы случаю контроль, чтобы случайно остановить строится правильно?
  2. В отличие от Global.asax, как я могу захватить эту ошибку и заставить элемент управления перекомпилировать? Пул приложений для утилизации?

Я в значительной степени затоплен.

ответ

0
  1. Ничего, насколько мне известно, только внешний объект interferring с жизненным циклом страницы или AJAX постбэка не может потенциально привести к этому, если каждый элемент управления генерируется, в свою очередь, тогда вы не будете «случайно» опыт дублирования идентификаторов.

  2. Я не думаю, что это жизнеспособный вариант, утилита для пула приложений? Ни в коем случае, для этого есть веская причина.

Возможно, вам будет полезна дополнительная информация/код? Это конкретная страница? Вы используете ViewState? Существует множество причин для «изворотливых» контрольных идентификаторов.

+0

Это конкретная страница, и она использует один серверный элемент управления, который хранит данные в состоянии представления. На самом деле я нахожусь в процессе удаления хранилища ViewState. Что может быть связано с сохранением данных в состоянии представления? – fordareh

+0

Well ViewState должен найти элементы управления после того, как страница будет отправлена ​​назад, поэтому, если есть какие-либо несоответствия, она будет бомбить, ужасно. Можете ли вы повторно произвести ошибку? – Mantorok