2014-02-20 615 views
0

顯示我用一個處理程序來獲取和使用下面的代碼顯示在瀏覽器窗口中的PDF:PDF不會在瀏覽器窗口中

byte[] byt = RetrieveDocument(int.Parse(context.Request.Params["id"]), context.Request.Params["title"]); 
string file = WriteDocumentFilePDF(byt); 
HttpContext.Current.Response.ContentType = "application/pdf"; 
HttpContext.Current.Response.AddHeader("content-length", byt.Length.ToString()); 
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=programdetails.pdf"); 
HttpContext.Current.Response.BinaryWrite(byt); 
HttpContext.Current.Response.End(); 

功能WriteDocumentFilePDF成功的PDF寫入temp目錄。我有上面的代碼在不同的應用程序中正常工作。我錯過了什麼嗎?

回答

0

如果您先通過byte[]memorystream,它會有所幫助嗎?因此,像

byte[] byt = RetrieveDocument(int.Parse(context.Request.Params["id"]), context.Request.Params["title"]); 
string file = WriteDocumentFilePDF(byt); 
MemoryStream ms = new MemoryStream(byt); 

,然後添加你的頭

HttpContext.Current.Response.ContentType = "application/pdf";  
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=programdetails.pdf"); 
HttpContext.Current.Response.BinaryWrite(ms.ToArray()); 
HttpContext.Current.Response.End(); 
2

當調試這樣的問題,我覺得是小提琴手一個寶貴的工具;許多次它使我從簡單的錯誤中解救出來。此外,本網站http://www.c-sharpcorner.com/uploadfile/prathore/what-is-an-ashx-file-handler-or-web-handler/舉例說明了使用GIF圖像做同樣的事情。你的例子和他的區別似乎是使用Response.WriteFile()而不是使用BinaryWrite()直接寫入Response。

我會在設置內容類型之前執行Response.ClearHeaders(),然後我將刪除對Response.End()的調用。

相關問題