'Duplicate headers received from server' Error in Chrome 16 with EPPlus 2.9 'Duplicate headers received from server' Error in Chrome 16 with EPPlus 2.9 google-chrome google-chrome

'Duplicate headers received from server' Error in Chrome 16 with EPPlus 2.9


I'm dumb, DateTime.Now.ToString("R") produces Thu, 26 Jan 2012 02:05:44 GMT

I fixed it by doing this:

String timestamp_without_commas = DateTime.Now.ToString("R").Replace(",","");Response.AppendHeader("Content-Disposition",    "attachment; " +    "filename=\"ExcelReport.xlsx\"; " +    "size=" + fileBytes.Length.ToString() + "; " +    "creation-date=" + timestamp_without_commas + "; " +    "modification-date=" + timestamp_without_commas + "; " +    "read-date=" + timestamp_without_commas);

I'm used to IE being cranky and Chrome playing nice...


I had the same issue and I also had the semi colon after attachment correctly. I found my issue was having commas in the filename. So I replaced them with dashes.


 /// <summary>        /// ExportToExcel is a method used for Export To Excel with template file.        ///        /// </summary>        /// <param name="templateFile">The fully qualified name of the new file, or the relative file name. Do not end the path with the directory separator character.</param>        /// <param name="dt">Datatable for export.</param>        /// <param name="printHeaders">Datatable's header used or not, when Export it. </param>        /// <param name="exportFileName">provide fileName only not path. </param>        /// <param name="Response">System.Web.HttpResponse. </param>        /// <param name="sheetNames">arg[0] means provide sheet name where you want to load data. \n (Optional Parameter) arg[1] means provide sheet name where you want to edit. (Optional Parameter) arg[2] means if your intention is to Edit sheet so provide searchText.</param>        ///         public static string ExportToExcel(FileInfo templateFile, DataTable dt, bool printHeaders, string exportFileName, System.Web.HttpResponse Response, params String[] sheetNames)        {            try            {                using (ExcelPackage p = new ExcelPackage(templateFile, false))                {                    EPPlus.AddSheetWithTemplate(p, dt, sheetNames[0], printHeaders);                    String[] clientName = exportFileName.Split(new char[] { '_' }, 2);                    if (sheetNames.Count() > 2)                    {                        ExcelPackagePlusLibrary.EPPlus.EditSheet(p, sheetNames[1], sheetNames[2], clientName[0] ?? exportFileName);                    }                    Byte[] fileBytes = p.GetAsByteArray(); //Read the Excel file in a byte array                    //Clear the response                    Response.ClearHeaders();                    Response.ClearContent();                    Response.Clear();                    //Response.Cookies.Clear();                    //Add the header & other information                    //Response.Cache.SetCacheability(System.Web.HttpCacheability.Private);                    //Response.CacheControl = "private";                    //Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;                    //Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;                    //Response.AppendHeader("Content-Length", fileBytes.Length.ToString());                    //Response.AppendHeader("Pragma", "cache");                    //Response.AppendHeader("Expires", "60");                    Response.AddHeader("Content-Disposition",                    "attachment; " +                    "filename=" + exportFileName + "; " +                    "size=" + fileBytes.Length.ToString() + "; " +                    "creation-date=" + DateTime.Now.ToString("R").Replace(",", "") + "; " +                    "modification-date=" + DateTime.Now.ToString("R").Replace(",", "") + "; " +                    "read-date=" + DateTime.Now.ToString("R").Replace(",", ""));                    //Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";                    Response.ContentType = "application/x-msexcel";                    //Write it back to the client                    Response.BinaryWrite(fileBytes);                    Response.Flush();                    Response.Close();                    /* Download to Client Side. */                    //DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/Testing/Downloaded/" + DateTime.Now.ToString("MM-dd-yyyy")));                    //if (!dir.Exists)                    //{                    //    dir.Create();                    //}                    //File.WriteAllBytes(dir.FullName + "\\" + fileName, fileBytes);                    return String.Empty;                }            }            catch (Exception ex)            {                _ErrorMessage = ex.Message.ToString();                return _ErrorMessage;            }        }