ASP-страница, отображающая старый запрос - PullRequest
1 голос
/ 15 ноября 2009

У меня есть страница ASP.net с полями для фильтрации набора данных. Когда я применяю фильтр (через кнопку), результаты загружаются нормально. Если я перехожу на другую страницу (в том же сеансе), а затем возвращаюсь на страницу, я переустанавливаю значение полей фильтра при загрузке страницы.

Иногда поля сбрасываются нормально, иногда они возвращаются пустыми. Кажется, что нет никакой реальной картины относительно того, когда они возвращаются нормально и когда они возвращаются пустыми. Есть ли вероятность того, что запрос / ответ кэшируется сервером? (IIS), если нет, то в чем может быть проблема?

Ответы [ 9 ]

7 голосов
/ 19 ноября 2009

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

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

Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.Add(new TimeSpan(-1,0,0));
Response.Expires = 0;
Response.CacheControl = "no-cache";
2 голосов
/ 15 ноября 2009

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

1 голос
/ 20 ноября 2009

Если вы не используете Ajax (и, следовательно, браузер не имеет ничего общего с извлечением данных), похоже, что это происходит из-за кеша или из-за ошибки загрузки данных .

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

Теперь, если это проблема в коде, зависите ли вы от файлов cookie (переменных сеанса) параметра URL или любой другой информации, которая может измениться при использовании приложения?

1 голос
/ 20 ноября 2009

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

0 голосов
/ 24 ноября 2009

Попробуйте передать ваш «фильтр» между вашими страницами через строку запроса.

Это был бы хороший способ доказать (так или иначе), что проблема заключается в кеше / состоянии, и вы можете увидеть, что на самом деле передается

0 голосов
/ 24 ноября 2009

ViewState как-то кэшируется. Если это не ваш браузер, то вы подключаетесь через прокси-сервер, который выполняет некоторое кэширование.
Также вы уверены, что не используете что-то кроме InProc для состояния сеанса?

0 голосов
/ 24 ноября 2009

Довольно быстрый способ узнать, что происходит, - это добавить несколько точек останова в те строки, где вы извлекаете материал из сеанса, и устранить его черт .

Если это происходит после того, как вы увидели, что материал с сессии извлекается нормально, и никаких других забавных дел не происходит (таких как вкусные исключения, проглатываемые где-то вдоль линии), то это означает, что это проблема кэширования браузера (и это хорошо удачи с этим!).

0 голосов
/ 21 ноября 2009

Возможно ли, что исключение выдается до или во время выполнения кода, который заполняет значения поля?

0 голосов
/ 18 ноября 2009
  1. попробуйте очистить браузер chache
  2. iisreset -stop, затем iisreset -start перезапустить IIS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...