ASHX处理程序;只发射一次

时间:2010-06-23 20:27:47

标签: asp.net image dynamic httphandler ashx

我有一个简单的ASHX处理程序,它返回一个动态生成的图像;图像是从自定义创建的类生成的,属于该类的对象使用Session传递给处理程序(我宁愿避免使用QueryString)。

处理程序用作ASP表单上的图像的URL,非常简单:下拉列表,按钮和图像。基本上,根据用户从列表中选择的内容,按下按钮后将生成相应的图像。

在开始时,实际图像的Visible属性设置为false;我不希望处理程序在数据存在之前显示任何内容。

按下按钮后,将添加包含必要对象的所需Session参数,并使用Server.Transfer刷新页面。当Page_load方法检测到Session参数已正确设置时,它会将图像上的Visible参数设置为true。

之后,处理程序将启动并生成图像。

到目前为止一直这么好......但是,如果用户现在选择与列表不同的内容并按下按钮,尽管在会话中传递了正确的对象,图像将不会更新。事实上,处理程序甚至不会启动(如果我在那里放置一个断点)。我需要关闭浏览器窗口并重新打开它才能工作。

任何想法可能是造成这种行为的原因?

我怀疑答案非常简单,我只是不了解ASP(或处理程序)的基本内容......

1 个答案:

答案 0 :(得分:4)

图像可能缓存在客户端上,浏览器也懒得从服务器请求新版本。在ProcessRequest方法的开头添加:

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