Мой сайт asp.net использует серверные элементы управления для повышения производительности путем кэширования частей страниц.
В большинстве случаев работает нормально, но иногда один из серверных элементов управления появляется на странице более одного раза - иногда два, а иногда три - даже если на элемент ссылаются только один раз на странице.
Когда это происходит, оно выглядит одинаково на нескольких компьютерах в нашем офисе - так что это не проблема браузера.
Если мы повторно загрузим файл .ascx для дублирующего элемента управления, это исправит его. Я предполагаю, что каким-то образом серверный кэш элемента управления вышел из строя, и повторная загрузка файла ascx очищает серверный кэш, поэтому его можно заново создать при следующем запросе страницы.
Мои вопросы:
- Кто-нибудь еще испытывал это?
- Есть ли способ это исправить?
Директивы в верхней части файла .ascx:
<%@ OutputCache Duration="86400" Shared="true" VaryByParam="none" %>
<%@ Control Language="VB" ClassName="Banner_LocalGuides" EnableViewState="false" %>
Элемент управления регистрируется на странице содержимого следующим образом:
<%@ Register TagPrefix="tymControls" TagName="LocalGuides" Src="~/Banner-LocalGuides.ascx" %>
Затем тег используется на странице содержимого следующим образом:
<tymControls:LocalGuides ID="LocalGuides" runat="server" />
Одна вещь, которую я рассмотрел, заключалась в том, что это может быть связано с синхронизацией периода перезапуска пула приложений в IIS по сравнению с атрибутом OutputCache Duration файла ascx, но я могу быть совершенно неправ. Время перезапуска пула приложений в настоящее время составляет 240 минут (14 400 секунд).
Подробнее о настройке нашего сайта:
- Запуск asp.net 4 в классическом конвейерном режиме.
- IIS 7
- Кодировано в vb.net
- Использование главных страниц, но на .ascx ссылаются из страниц содержимого, а не из главных страниц
Любая помощь высоко ценится.