Я пытаюсь в ASP.NET использовать HTTPHandler для отображения изображения и обновления каждые 5 секунд.Этот httphandler просто отображает текущее время в растровое изображение.На стороне aspx изображение находится внутри AJAX UpadtePanel, и я использую таймер для обновления изображения каждые 5 секунд.
Моя проблема заключается в следующем:
- в IE9,изображение не обновляется вообще.Мой HttpHandler запрашивается только один раз.
- в chrome, изображение обновляется, но оно «мигает», т. Е. Каждые 5 секунд оно очищается в течение нескольких секунд, затем отображается, затем очищается снова и т. Д. *
Для целей отладки я также добавил в UpdatePanel метку, заполненную случайным значением.Он хорошо обновляется в обоих веб-браузерах.
Вот код на моей странице aspx:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" ID="UpdateTimer" Interval="5000" OnTick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" ID="TimedPanel" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="UpdateTimer" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Image ID="TheImage" alt="httpHandler" src="getImage.ashx?id=1" runat="server" />
<asp:Label ID="Label" runat="server" Font-Size="XX-Large" ></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
В моем HttpHandler я не забыл отключить кэширование следующим образом:
cache.SetCacheability(HttpCacheability.NoCache);
cache.SetNoStore();
cache.SetExpires(DateTime.MinValue);
И чтобы мой браузер IE9 не кэшировал изображение, я также пытался изменять ImageUrl каждый раз, когда таймер вызывается в файле aspx.cs, как показано ниже.Но мой HttpHandler по-прежнему вызывается только один раз, когда страница отображается впервые:
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
Label.Text = ((System.Environment.TickCount / 100.0) % 360).ToString("F2");
TheImage.ImageUrl = "getImage.ashx?id=" + System.Environment.TickCount.ToString();
}
Я надеюсь, что моя проблема хорошо объяснена.Что я делаю не так?
Заранее спасибо!