[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 會正常,上正式機器後,就出現 失敗 – 網路錯誤
後來解決因為跟編碼有關係,原本我在 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