обработчик ASHX; загорается только один раз

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

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

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

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

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

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

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

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


person Shaamaan    schedule 23.06.2010    source источник


Ответы (1)


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

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
person mmx    schedule 23.06.2010