У меня есть действительно конкретный вопрос, на который я не думаю, что у меня будет ответ, но ... давайте попробуем!
У меня есть веб-страница 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 у меня есть поле 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 (может быть, механизм кэширования?).
У вас есть представление о том, как решить эту проблему?
Спасибо за ваши ответы!