1

Failed - Network error

Chrome Debugger window

Screenshot 2 is the debugger window info, and below is the code used to download the file, it was running well in visual studio Chrome Emulators, but when I deploy the code, it stopped working. the same code is used in another place and that one works fine, not sure why this one doesn't work.

    public ActionResult DownloadFile(decimal document_id)
    {
        var DocumentForDownload = riskProfile.GetDocumentForDownload(document_id, isfordownload: true);
        byte[] byteArray = DocumentForDownload.DOCUMENT;
        var filename = DocumentForDownload.DOCUMENT_NAME + "." + DocumentForDownload.EXTENSION;
        string mimeType = "application/" + DocumentForDownload.EXTENSION;
        System.Web.HttpContext.Current.Response.Clear();
        System.Web.HttpContext.Current.Response.ClearContent();
        System.Web.HttpContext.Current.Response.ClearHeaders();
        System.Web.HttpContext.Current.Response.AddHeader("content-length", byteArray.Length.ToString());
        System.Web.HttpContext.Current.Response.ContentType = "application/" + DocumentForDownload.EXTENSION;
        System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename);
        System.Web.HttpContext.Current.Response.Charset = "utf-8";
        System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
        System.Web.HttpContext.Current.Response.BinaryWrite(byteArray);
        System.Web.HttpContext.Current.Response.Flush();
        System.Web.HttpContext.Current.Response.OutputStream.Close();
        System.Web.HttpContext.Current.Response.End();
        System.Web.HttpContext.Current.Response.Close();
        return new EmptyResult();
    }
Yan
  • 153
  • 3
  • 12
  • i checked in visual studio chrome emulator, the header contains content-length property, but when i deploy to the server, it doesn't, don't know why. any idea? – Yan Oct 17 '16 at 15:03

1 Answers1

2

found the solution, the transfer encoding was chunked, which doesn't support content-length header, so we need to specify the transfer-encoding to identity.

System.Web.HttpContext.Current.Response.AddHeader("Transfer-Encoding", "identity")
Yan
  • 153
  • 3
  • 12