我試圖下載一個excel文件(使用C#\ ASP.NET動態生成),當我點擊「打開」它時,我得到IE10查看下載對話框「abc.xls couldn' t下載「錯誤,但點擊」重試「後,它會在第二次嘗試中正確打開.xls文件。IE 10 - 文件下載問題
當我在Firefox或Chrome中測試它時,它工作正常。
我試圖下載一個excel文件(使用C#\ ASP.NET動態生成),當我點擊「打開」它時,我得到IE10查看下載對話框「abc.xls couldn' t下載「錯誤,但點擊」重試「後,它會在第二次嘗試中正確打開.xls文件。IE 10 - 文件下載問題
當我在Firefox或Chrome中測試它時,它工作正常。
我想,這也許可以解釋的奇怪現象:
"Content-Length and Transfer-Encoding Validation in the IE10 Download Manager"
看來,下載文件時,IE9的測試版已經推出content-length
和transfer-encoding
驗證,但發現它太有問題的,因爲許多服務器沒有發通過代碼處理這些下載的適當值。顯然,他們在IE10中將其重新啓用,但只是希望最好。
我打賭下載開始時發送準確的值應該清除這個問題。當然,從...開始,這應該不成問題。
[編輯]
原來這個問題涉及(至少對我來說)在代碼使用Response.Close()
和/或Response.End()
。 This article解釋了爲什麼你不應該使用這兩種方法,爲什麼HttpApplication.CompleteRequest
是選擇的方法。將我們的Response.End()
和Response.Close()
實例更改爲HttpApplication.CompleteRequest
解決了我們的IE10下載問題。像魔術一樣。顯然,MSDN現在不鼓勵使用這兩種方法(儘管多年的MSDN代碼示例包含它們),現在主張使用HttpApplication.CompleteRequest
代替。
我們總是在與歐亞大陸的戰爭......
[/編輯]
我只想添加一件重要的事情要注意。 我在使用IE10下載動態生成的文件(CSV,XLS)時遇到同樣的問題。 我要叫'HttpApplication.CompleteRequest()'** **前調用到Response.End'()'。否則,來自ASPX頁面的HTML標記仍會附加到我下載的文件中。 – stun
我得到了類似的行爲 - 約12小時,什麼工作對我來說打擊這一問題後:
從
內容類型改變響應報頭:應用/應用/ vnd.ms-的excel
要
內容類型:應用程序/八位字節流
請注意,我有另外一個未提及的症狀:我設置
內容處置:附件;文件名=「Inventory_10-10-2013.xls」
儘管IE的設置從URL中使用的文件名(這樣說:「getInventory無法下載」 - 它在保存了錯誤命名文件下載文件夾!)。
當我改變了「內容類型」,即開始從頭部履行的文件名。
對於這裏的記錄都是我設置的響應頭:
你能分享你的代碼嗎?這將有助於確定您的問題。 –