HttpException во время выполнения, затрагивающий только одну страницу / usercontrol - PullRequest
0 голосов
/ 26 мая 2010

У нас проблема с сайтом .NET 3.5 WebForms, когда иногда наши журналы ошибок заполняются следующим сообщением об ошибке:

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

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

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

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

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

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

1 Ответ

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

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

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

...