InvalidCastException: System.Web.UI.PartialCachingControl - ›MyCustomControl при кэшировании вывода

Проблема: я не могу использовать OutputCaching с элементами управления, производными от MyCustomControl. Элементы управления загружаются динамически с использованием определений из базы данных с помощью метода Page.LoadControl.

Когда я добавляю в ascx ‹% @ OutputCache VaryByParam =" * "Duration =" 3600 "%>, создается исключение« InvalidCastException: System.Web.UI.PartialCachingControl -> MyCustomControl ».

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

Второй вопрос касается iis7 и нативного кэширования вывода - решает ли это эту проблему? (Я попытался настроить несколько счетчиков производительности и увидел, что кеш не попал ...)


person marcinn    schedule 21.11.2009    source источник


Ответы (1)


Если вы загружаете элементы управления динамически, они загружаются как System.Web.UI.PartialCachingControl.

Control control = Page.LoadControl("/somecontrol.ascx");
this.Controls.Add(control);
MyCustomControl myControl = ((PartialCachingControl)control).CachedControl as MyCustomControl 

Это поведение точно такое же, как в IIS7.

person jonot    schedule 12.03.2010