消除图片在ie中缓存而无法更新的问题
程序中圖片是動態顯示的
原先把打算把圖片保存在服務器端然后顯示
可是由于ie的緩存問題導致圖片無法實時更新顯示
所以改為把圖片存在session中然后再顯示
需要保存的時候再保存到本地
//--------------chart.ashx.cs-------------------
using System;
using System.Web.SessionState;
using System.IO;
using System.Web;
namespace WebApplication3
{
?/// <summary>
?/// chart 的摘要說明。
?/// </summary>
?public class ChartHandler : IHttpHandler, IReadOnlySessionState
?{
??public bool IsReusable
??{
???get { return true; }
??}
???
??public void ProcessRequest (HttpContext ctx)
??{
???string chartID = ctx.Request.QueryString[0];
???Array arr = (Array) ctx.Session [chartID];
???ctx.ClearError ();
???ctx.Response.Expires = 0;
???ctx.Response.Buffer = true;
???ctx.Response.Clear ();
???MemoryStream memStream = new MemoryStream ((byte[])arr);
???memStream.WriteTo (ctx.Response.OutputStream);
???memStream.Close ();
???ctx.Response.ContentType = "image/gif";
???ctx.Response.StatusCode = 400;
???ctx.Response.End ();
??}
?}
}
?? //--------------chart.ashx?? 只需要如下一行---------------
<% @ WebHandler language="C#" class="WebApplication3.ChartHandler" codebehind="chart.ashx.cs" %>
//WebApplication3為命名空間
//ChartHandler為chart.ashx.cs中類的名字?
?
//--------------調用說明-----------------
//需要把圖片存到byte數組中 假設為byteArr? 則
???// ------------------------------------------------------------------------
???//把圖片儲存在session里面
???// ------------------------------------------------------------------------
???HttpContext???? ctx = HttpContext.Current;
???string????????? chartID = Guid.NewGuid ().ToString ();
???????????
???ctx.Session [chartID] = byteArr;
???Image1.ImageUrl = string.Concat ("chart.ashx?", chartID);
補充說明:
以 ashx 為擴展名的文件是HTTP handlers ,SimpleHandlerFactory 事件工廠知道如何編譯該文件,并實例化IHttpHandler 接口,不需要配置web.config也不需要更新IIS的擴展名映射
總結
以上是生活随笔為你收集整理的消除图片在ie中缓存而无法更新的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写入和读取图片(c# asp.net s
- 下一篇: 屏掉F5刷新的办法