2012-01-26 7 views
5

EPPlus 2.9で再生していて、何かの理由でDuplicate headers received from serverエラーが発生しました。.xlsxファイルをChrome 16でダウンロードしようとしましたIE9)。「サーバーから受信した重複したヘッダー」EPPlus 2.9でChrome 16でエラーが発生しました

私はthis tutorialを使用していると私は、このコード行に問題を絞り込むました:

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

私のユーザーエージェント:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7 

私はクロームが好きではないことをthis Chrome forum pageで読みますコンマ(,)をContent-Dispositionヘッダーに置き、セミコロン(;)に置き換える必要があります。

誰もがアイデアを得ているか、同じエラーが発生していますか?

答えて

9

は私がDateTime.Now.ToString("R")は、私はこれを行うことによってそれを固定Thu, 26 Jan 2012 02:05:44 GMT

を生成し、ダムだ:

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); 

私はIEが不機嫌であることとChromeは素晴らしい演奏に使用しています...

+3

同様の問題がありました。ありがとう – NotMe

0
/// <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; 
      } 
     } 
+0

ちょうど情報のために、ファイル名には引用符が必要です: "filename =" + "\" "+ exportFileName +" \ "" + ";" Firefoxにバグがあるのでファイル名が引用符で囲まれていない場合は、最初のスペースの後に名前が切り捨てられます。リファレンスhttp://kb.mozillazine.org/Filenames_with_spaces_are_truncated_upon_download –

3

私は同じ問題を抱えていました。私の問題は、ファイル名にカンマがあることがわかりました。だから私はそれらをダッシュ​​で置き換えました。

+0

問題を修正しました – Balamurugan

関連する問題