我在使用ASP.NET中的文件時遇到了圖像緩存問題。我的詳細解決方案是:使用ASP.NET中的文件進行圖像緩存問題
對於第一個請求:我檢查圖像文件不存在,並將圖像文件寫入硬盤。之後,返回文件瀏覽器
對於以後的請求的URL:該函數只是返回文件的網址到瀏覽器
我的問題是:有時與第1請求,瀏覽器無法從url中獲取圖像數據並導致404 - File Not Found錯誤。我認爲這可能是因爲文件已被寫入,但尚未準備好從瀏覽器中檢索,但在代碼中,我使用位圖&的「using statement」和「Dispose method」來確保所有內容都準備好從瀏覽器訪問。
在更多的細節,我現在用的是類似的解決方案,如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()函數)
「將文件的url返回給瀏覽器」 - 它是否爲302重定向?或者你「第一次請求」是指請求到其他頁面,而不是圖像? –
您沒有發佈足夠的代碼來診斷爲什麼第一個請求返回沒有圖像準備好的URL。您所問的錯誤是在您剔除的代碼中。也就是說,你在@Aristos的回答中提到了一個主要的線程錯誤。 –
嗨克里斯,我添加了鏈接到問題的完整源代碼。有空時請回顧一下。提前致謝。 –