используя кэширование в пользовательском контроле и VaryByControl - PullRequest
3 голосов
/ 06 ноября 2011

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

 <%@ OutputCache Duration="1000" VaryByParam="none"
 VaryByControl="visitIsAu" %>

, он прекрасно работает, когда я изменяю значение переменной в разметке следующим образом

 visitIsAu="true"

но это не работает, когда значение изменяется с помощью кода, подобного этому

   visitIsAu="<%=this.CurentUser.IsAuthorizedToVisitFiltered%>"

значение переменной не изменяется, поэтому ее кэш не обновляется.

делаетКто-нибудь знает, почему это произошло?

1 Ответ

1 голос
/ 22 ноября 2011

Почему-то я никогда не доверял тому, как ASP.NET обрабатывает кеш, используя параметры разметки или используя «внедренные» серверные теги в файлах aspx.Я знаю, что это работает, но это легко контролировать только в простых сценариях.

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

Мы можем иметь: ascx> aspx или ascx> aspx> master.

В вашем случае вам нужно гарантировать, что CurrentUser установлен дозагрузка вашего пользовательского контроля.Проверьте это с помощью отладки.

...