У меня действительно конкретный вопрос, на который я не думаю, что у меня будет ответ, но ... давай попробуем! У меня есть веб-страница aspx, которая отлично работает с Firefox и Chrome, но не с IE9 (не кормите тролля ^^).
Моя цель - разрешить асинхронную загрузку изображений с помощью ASP AjaxControlToolkit (см. 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 у меня есть поле asp: Image в UpdatePanel, которое просит обработчик получать изображение каждые пять секунд:
<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 (может быть, механизм кеширования?).
Вы знаете, как решить эту проблему?
Спасибо за ответы!