English 中文(简体)
c. as和#
原标题:cache problem in asp.net with c#
  • 时间:2009-11-07 13:23:08
  •  标签:

我正在利用档案控制来载上图像。 为此,我曾将其储存在海滩上。

以逐字标示,用HttpContext在.ashx文档中显示这种形象。 出于某种原因

在藏匿处,有时没有。 我使用的是p.net2.0和C#语言。

我的《拯救法典》:

//Name of the Image 
string strGuid = Guid.NewGuid().ToString(); 
byte[] byteImage = new byte[ImageUpload.PostedFile.ContentLength];

//file upload control ID "ImageUpload" and read it and save it in cache.
ImageUpload.PostedFile.InputStream.Read(byteImage, 0, byteImage.Length);

//Saving Byte in the cache
Cache.Add(strGuid, byteImage, null, DateTime.Now.AddDays(2), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);

//Saving Image Format in cache
Cache.Add(string.Format("{0}_Type", strGuid), strContentType, null, DateTime.Now.AddDays(2), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
UserImage.ImageUrl = string.Format("~/UserControl/ImageHander.ashx?imgId={0}", strGuid);

招标法 图表:

public void ProcessRequest (HttpContext context) 
{
    string strImageGuid = context.Request.QueryString["imgId"].ToString();
    string strContentTypeID = string.Format("{0}_Type",  context.Request.QueryString["imgId"].ToString());
    byte[] byteImage =(byte []) context.Cache[strImageGuid];
    string strContentType = (string)context.Cache[strContentTypeID];
    context.Response.ContentType = strContentType;
    context.Response.OutputStream.Write(byteImage, 0, byteImage.Length);
}

是否存在任何问题 或者采取任何其他更好的做法?

Thanks! sanjay pal

问题回答

藏匿的物品没有保证在那里找到。 在某些情况下,框架可能从海滩上过期,例如,如果它开始在记忆上保持低落。 在本案中,它将称为on RemoveCallback

海滩不是可靠的储存,如果项目在使用之前就存在,如果它不采取必要行动加以封装并退回,则需要始终检查。

您可以具体指明CacheItemPriority。 不能去除CacheItemPriority。 正常情况下,在Cache满期之前,防止从Cache移送。

但是,更为常规的做法是,如果你发现藏匿藏匿藏匿点,就可予以消除,并重新接纳。





相关问题
热门标签