2017-05-08 62 views
0

症狀非常類似於C# BinaryWrite over SSL但我的代碼已經符合所有建議的解決方案。在撰寫本文時,此行爲在Edge,IE11和Chrome上都很明顯。通過HTTPS傳遞時,通過HTTP正常工作的代碼破裂。HTTPS內容處置附件

private void RenderPdfToResponse(bool asDownload, byte[] documentBytes) 
{ 
    Response.BufferOutput = true; 
    Response.ClearContent(); 
    Response.ClearHeaders(); 
    Response.AddHeader("Cache-control", "no-store"); 
    Response.ContentType = "application/pdf"; 
    Response.AddHeader("Content-Length", documentBytes.Length.ToString()); 
    if (asDownload) 
    Response.AddHeader("Content-Disposition", 
     string.Format("attachment; filename=export{0:yyyyMMddHHmmss}.pdf", DateTime.UtcNow)); 
    Response.BinaryWrite(documentBytes); 
    Response.Flush(); 
    HttpContext.Current.ApplicationInstance.CompleteRequest(); 
} 

問題出在瀏覽器上。交付應保存到文件中的二進制內容,而是在瀏覽器窗口中呈現。使用調試工具進行截取並保存到文件中,可以驗證交付的字節是否構成有效的PDF。

鑑於所引用問題的所有建議已經生效,問題在於瀏覽器行爲,還有哪些選項?

回答

0

諮詢https://tools.ietf.org/html/rfc6266我們發現文件名部分是可選的。實驗指定

Response.AddHeader("Content-Disposition", "attachment"); 

會導致所有主要的瀏覽器彈出一個另存爲對話框與它顯然是從ASPX文件的名稱和MIME類型導出的名稱export-pdf.pdf

在這一點上,我被要求發貨。我希望有人認爲這有幫助。

相關問題