Обработчик ASHX;загорается только один раз - PullRequest
1 голос
/ 24 июня 2010

У меня есть простой обработчик ASHX, который возвращает динамически сгенерированное изображение;изображение генерируется из созданного пользователем класса, а объект, принадлежащий этому классу, передается обработчику с помощью Session (я бы лучше не использовал QueryString).

Обработчик используется в качестве URL-адреса изображенияна форме ASP, которая очень проста: выпадающий список, кнопка и изображение.В основном, в зависимости от того, что пользователь выбирает из списка, соответствующее изображение будет сгенерировано после нажатия кнопки.

При запуске фактическое изображение имеет свойство Visible, установленное в значение false;Я не хочу, чтобы обработчик отображал что-либо до того, как все данные будут там.

После нажатия кнопки добавляется требуемый параметр Session, содержащий необходимый объект, и страница обновляется с помощью Server.Transfer.Когда метод Page_load обнаруживает, что параметр Session установлен правильно, он устанавливает для параметра Visible на изображении значение true.

После этого обработчик запускается и генерирует изображение.

Пока чтотак хорошо ... Однако, если пользователь теперь выбирает что-то отличное от списка и нажимает кнопку, несмотря на то, что правильный объект передается в сеансе, изображение не будет обновлено.Фактически, обработчик даже не запустится (если я поставлю там точку останова).Мне нужно закрыть окно браузера и снова открыть его, чтобы он работал.

Есть идеи, что может быть причиной такого поведения?

Я подозреваю, что ответ очень прост, и я просто не понимаюне знаю ничего фундаментального о ASP (или обработчиках) ...

1 Ответ

4 голосов
/ 24 июня 2010

Изображение, вероятно, кэшируется на клиенте, и браузер не удосужился запросить новую версию с сервера.В начале метода ProcessRequest добавьте:

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
...