我試圖實現我稱之爲「一次性緩存」的特定文件在我的ASP.NET 3.5站點中。根據請求,文件從遠程文件服務器下載到Web服務器上,然後由我的頁面提供。當我去刪除它時,問題就出現了。如果我刪除OnUnload
方法中的文件,客戶端沒有時間檢索它。是否有某種方式檢測文件的下載並在第一次訪問後立即刪除它?我的代碼是這樣的:ASP.NET「一次性緩存」文件
private bool _deleteFlag = false;
private string _deleteFile = string.Empty;
protected void Page_Load(object sender, EventArgs e) {
if (!string.IsNullOrEmpty(Request.QueryString["file"])) {
_deleteFlag = Request.QueryString["file"].Contains(@"cache/");
_deleteFile = Request.QueryString["file"];
}
}
protected override void OnUnload(EventArgs e) {
if (_deleteFlag) {
// Can't delete here; the client is still trying to retrieve it.
System.IO.File.Delete(Server.MapPath(_deleteFile));
}
base.OnUnload(e);
}
我傾向於寫一個IHttpHandler
重寫文件請求,但感覺就像矯枉過正。
如果您有IIS訪問你可以試試這個[SO鏈接] [1] [1]:http://stackoverflow.com/questions/ 2195266/how-to-configure-static-content-cache-per-folder-and-extension-in-iis7 – karthick
@karthick,這看起來很有希望。但它會導致IIS *刪除*我的文件,還是我需要爲自己設計一個機制? –