Дублирование идентификатора элемента управления приводит к исключению

#c# #asp.net #caching #sitecore

#c# #asp.net #кэширование #sitecore

Вопрос:

Недавно я опубликовал некоторый код на нашем производственном веб-сайте и заметил, что IIS регистрирует некоторые ошибки с текстом исключения:

Было найдено несколько элементов управления с одинаковым идентификатором ‘_ffffca417ddfd512’. FindControl требует, чтобы элементы управления имели уникальные идентификаторы.

На данный момент у меня нет трассировки стека. Страница в основном представляет собой статический контент с несколькими кнопками ссылок и кучей пользовательских элементов управления. Он также использует платформу CMS Sitecore 6.0 (это элемент содержимого). Я отключил кэширование .net для пользовательских элементов управления и страницы (layout), и, похоже, это исправило проблему, но сайт довольно загружен, и я хотел бы иметь некоторый уровень кэширования.

Мой вопрос, известно ли об этой проблеме в sitecore? И должен ли я кэшировать только на уровне страницы или на уровне управления в sitecore?

Комментарии:

1. Возможно, эта статья покажется вам интересной: sdn.sitecore.net/upload/sitecore6/sc62keywords /…

Ответ №1:

Похоже, это не проблема, связанная с Sitecore — http://support.microsoft.com/kb/834608

Если вы используете его, выключите ASP.net кэширование вывода и использование кэширования Sitecore, либо встроенного:

 <sc:Sublayout runat="server" runat="server" Cacheable="true" VaryByData="true"/>
  

…или…

 <sc:XslFile runat="server" runat="server" runat="server" Cacheable="true" VaryByData="true"/>
  

… или в привязках вашей презентации на уровне шаблона или элемента, или в элементе определения вложенного представления или рендеринга. Одинаковые параметры кэширования доступны во всех трех расположениях.

Ответ №2:

Кэшируйте на уровне подуровня (control), поскольку они могут быть повторно использованы на разных страницах. Это должно удовлетворить потребности в кэшировании динамических данных, предполагая, что вы максимально используете подразложения.

Ответ №3:

Нашел это в руководстве по установке Sitecore E-Commerce (Sitecore E-Commerce Services 2.1и CMS 7.0 Rev: 2013-10-17, страница 12)

В некоторых случаях, особенно при высокой загрузке сервера, редактор содержимого CMS может отображать следующее сообщение об ошибке :

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

Обходной путь: Закомментируйте следующий процессор в файле web.config:

 <processor type="Sitecore.Shell.Applications.ContentEditor.Pipelines.RenderContentEditor.RenderSkinedContentEditor, Sitecore.Client"/>
  

Это предписывает редактировать содержимое или игнорировать настройки обложки для текущего элемента
. Эти настройки берутся из значения поля __Skin или ContentEditor.DefaultSkin
настройка. Теперь все элементы будут отображаться с использованием обложки по умолчанию, и вы больше не увидите сообщение об ошибке

надеюсь, это кому-нибудь поможет