【发布时间】:2011-10-17 19:15:53
【问题描述】:
我有一个非常具体的问题,我想我不会有答案,但是......让我们试试吧! 我有一个 aspx 网页,它可以与 Firefox 和 Chrome 完美配合,但不能在 IE9 上运行(不要喂巨魔^^)。
我的目标是允许使用 ASP AjaxControlToolkit 进行异步图像上传(有关演示,请参阅 http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/asyncfileupload/asyncfileupload.aspx)。图片异步上传完成后,调用 UploadedComplete 函数并将图片放入会话变量中:
if (fileSizeOk && fileTypeOk)
Session["image"] = this.AsyncFileUploadLogo.FileBytes;
并行地,我有一个处理程序负责从会话变量返回图像:
byte[] buffer = (byte[])context.Session["image"];
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
context.Response.OutputStream.Flush();
然后,在我的 aspx 页面中,我在 UpdatePanel 中有一个 asp:Image 字段,它要求处理程序每五秒获取一次图像:
<asp:UpdatePanel ID="UpdatePanelLogo" runat="server">
<ContentTemplate>
<asp:Image ID="ImageFileUploaded" runat="server" ImageUrl="AsyncImageHandler.ashx" />
<asp:Timer ID="TimerFileUploaded" Interval="5000" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
当用户验证表单时,我只需要从会话中获取变量,然后将图像与其他值一起保存在数据库中。
这是我的问题:对于 Firefox 和 Chrome,计时器会引发重新加载图像,但对于 IE(甚至 IE9),图像仅在按下 F5 后才会显示。当我在处理程序中放置断点时,我可以看到它从未被 IE 调用(可能是缓存机制?)。
你知道如何解决这个问题吗?
感谢您的回答!
【问题讨论】:
-
我发现这个在没有更新面板的情况下对我有用:nishantwork.wordpress.com/2013/01/18/…
标签: asp.net asynchronous ajaxcontroltoolkit handler