[C#] ASP.net 下載檔案出現 失敗– 網路錯誤

2018-07-17

之前好好的 code 因為 Server 搬家後,莫名不能用 ,原本的 code 大概是這樣

workbook.Write(file);
file.Close();


Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode(CurrDate.ToString("yyyyMMddHHmmss") + ".xls"));
Response.AddHeader("Transfer-Encoding", "identity");
//設定MIME 標頭
//可以參考 http://baike.baidu.com/view/160611.htm
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "xls/" + guid + ".xls"));
Response.Flush();
Response.Close();


在 localhost 會正常,上正式機器後,就出現 失敗 – 網路錯誤

Image085



後來解決因為跟編碼有關係,原本我在 web.config 就有加上 MIME 的設定,而且直接透過網址是可以下載的,所以我判斷是在 header 少加上東西,後來測試一下發現加上這一行就好了

 Response.AddHeader("Transfer-Encoding", "identity");


完成後的 C# Code :

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode(CurrDate.ToString("yyyyMMddHHmmss") + ".xls"));
Response.AddHeader("Transfer-Encoding", "identity");
//設定MIME 標頭
//可以參考 http://baike.baidu.com/view/160611.htm
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "xls/" + guid + ".xls"));
Response.Flush();
Response.Close();




後記: 後來我才找到有人寫過這問題 早點找到就不會花這麼多時間  參考網址 : https://www.itstrike.cn/Question/82c7ace6-aa60-4cab-9833-3dcaed614df7.html
參考資料 :
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Transfer-Encoding


當麻許的超技八 2014 | Donma Hsu Design.