2011-09-21 62 views
0

我在創建和提供自定義PDF類庫的輔助功能:Response.BinaryWrite()適用於一個頁面,而不是其他

byte[] file = GetPdfBytesFromHtmlString(htmlCodeToConvert); 

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.Clear(); 
response.AddHeader("Content-Type", "binary/octet-stream"); 
response.AddHeader("Content-Disposition", "attachment; filename=" + filename + "; size=" + file.Length.ToString()); 
response.Flush(); 
response.BinaryWrite(downloadBytes); 
response.Flush(); 
response.End(); 

當一個頁面,一切正常就執行該代碼。另一個頁面大部分是相同的,唯一的區別是要寫入到PDF的HTML輸出,我已經驗證了它的工作正常。然而,沒有任何反應。我已經瀏覽了代碼,它只是順其自然,但瀏覽器不會提示下載。

我知道我會留下很多代碼,但是因爲它在一個實例中運行,而不是另一個,所以我很難找到想要尋求解決方案的想法。

+1

「幾乎相同」具有「不完全相同」的可疑外觀。 –

+0

非工作版本中的數據實際上是二進制數據(例如預生產的pdf)還是僅僅是使用'BinaryWrite'寫出的文本數據? –

+0

「可疑」是正確的。請參閱下面的回覆。 –

回答

1

我真的很討厭回答我自己的問題,因爲這意味着我在提問之前沒有做足夠的研究。但是,我正在審查它,並意識到我只會在Firefox中進行測試。在IE中運行它暴露了一個腳本錯誤,其中包含文本「錯誤解析附近'%PDF - 1.4%',這是我在搜索時看到的,但沒有跟進。」

問題是不工作的頁面使用AJAX更新面板,我沒有意識到當我說代碼是相同的。導出按鈕點擊代碼是,但標記不是。

第二個回覆在this post包含一些額外的信息和解決方法

0

您創建的字節數組在代碼中稱爲文件,但是您用二進制寫入'downloadbytes' - 這是問題嗎?

+0

我的錯,我爲了清楚而改變了變量名,但並沒有改變它的位置。 –

0

如果問題是更新面板,那麼您只需爲正在調用該函數的控件添加一個完整的回發觸發器。

相關問題