我在ASP.NET中使用文件面临着图像缓存的问题。 我详细的解决方案是:
对于第一个要求:我检查图像文件不存在,将映像文件写入到硬盘中。 之后,返回文件的网址到浏览器
对于以后的请求:该函数只是返回文件的网址到浏览器
我的问题是:有时与第1请求,浏览器无法从URL中的图像数据,并导致404 - 找不到文件错误。 我想可能是因为该文件的写入,但没有准备好从浏览器获取,但在代码中,我同时使用“使用说明”和“处置方法”的位图和图形对象,以确保一切都准备好从浏览器访问。
在更多的细节,我现在用的是类似的解决方案,如NopCommerce:
lock (s_lock) { ...........
using (var stream = new MemoryStream(LoadPictureBinary(picture))) {
using(var b = new Bitmap(stream)){
using(var newBitMap = new Bitmap(newSize.Width, newSize.Height)){
.......................
newBitMap.Save(
Path.Combine(this.LocalThumbImagePath, localFilename), ici, ep);
}
}
}
} // end lock
return url;
更多信息:你可以在检查完整的代码http://nopcommerce.codeplex.com/SourceControl/changeset/view/9125b9a7fafe#src%2fLibraries%2fNop.Services%2fMedia%2fPictureService.cs (请搜索GetPictureUrl()函数)