Я правильно использую кеш? - PullRequest
0 голосов
/ 02 июля 2010

У меня есть страница, где я извлекаю набор данных из базы данных, несколько тысяч записей.Я получаю его при загрузке страницы и сохраняю в кеше.Каждый раз, когда на странице выполняется какая-либо операция, я проверяю кэш, чтобы убедиться, что он все еще там, а если нет, то получаю его снова (истечение 20 минут);довольно типичная настройка.

Когда я запускаю страницу, исходные данные загружаются нормально, и к данным применяется RowFilter по умолчанию.Когда я изменяю значение выпадающего меню (которое меняет RowFilter), страница на мгновение зависает, а затем возвращает ошибку JavaScript:

Строка: 80772370 (да, это строка 80 миллионов ...)
Char: 17
Ошибка: синтаксическая ошибка
Код: 0
URL: - URL страницы, на которой я нахожусь -

Эта ошибка повторяется ТОЧНО 20 раз.

Когда я повторно запускаю страницу и операцию, которая отображает эту ошибку, я получаю другой номер строки (например, в следующий раз, когда я запустил его после публикацииПриведенное выше сообщение указывает на 80718666), ровно 20 раз.

Теперь несколько кривых:

  1. У меня возникли те же проблемы, когда я использовал сеанс для храненияданные, а не кеш.
  2. У меня нет этой проблемы в среде разработки (это происходит в QA).Файл web.config для каждой среды практически идентичен, но основное различие между ними заключается в том, что QA использует сервер sessionState, который отделен от самого себя.Вот почему я переместился из переменных сеанса в кеш в первую очередь.
  3. Когда критерий поиска предназначен для полного отсутствия результатов, он работает как должен (не показывает результатов).

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

Спасибо, СО сообщество.

1 Ответ

1 голос
/ 02 июля 2010

если вы используете UpdatePanel, удалите его, чтобы увидеть, что является настоящей ошибкой , потому что теперь ошибка скрыта в возвращаемой строке javascript, в указанной вами позиции.

После того, как вы обнаружите свою ошибку, снова вызовите UpdatePanel.

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

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

...