2011-02-01 80 views
0

我有一個簡單的'文件下載'通用處理程序,它在通過相同響應發送文件之前設置響應內容類型和標題。通過關閉緩存的.ashx文件下載文件時出現IE錯誤

我還在Global.asax中設置了Response.Cache.SetCacheability(HttpCacheability.server)。

正如我從各種來源注意到的,Internet Explorer不喜歡這個no-cache設置,並在嘗試下載文件時發出錯誤(請求的站點不可用或無法找到)。

我想也許我可以覆蓋.ashx頁面中的這個設置,所以我將響應的緩存設置更改爲public。這並沒有解決問題...從global.asax刪除行確實解決了這個問題,但顯然影響整個網站。

有沒有辦法只爲我的通用處理程序設置cachability?

乾杯:d

回答

0

你能只檢查請求是否是您的通用處理程序作出,並根據結果提供相應的緩存設置?這樣的事情:

public void Application_OnPreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    if (!HttpContext.Current.Request.Url.AbsolutePath.EndsWith("MyHandler.asxh", StringComparison.InvariantCultureIgnoreCase)) 
    { 
     HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Server); 
    } 
} 
+0

謝謝你,我只是想知道如果我可以重寫此值在奇數場合,我要求一個特定的頁面 - 因此避免了每個請求的URL檢查。在附註中,我的SetCacheability代碼最初是在application_BeginRequest中的 - 將您的示例放在OnPreRequestHandlerExecute中有什麼好處?謝謝:) – 2011-02-01 16:39:10