2010-02-22 100 views
3

當用戶請求下載文檔時,我使用HttpResponse.OutputStream.Write方法向PDF文件寫出HttpResponse。它適用於除Firefox之外的所有瀏覽器(3.5.8)。在Firefox中,它有時會顯示文件,有時會顯示實際的字節流。當它顯示一個字節流時,http響應永遠不會完成。我看到「傳輸數據」狀態,字節流以EOF結束。一段時間後,我得到'連接被重置'窗口。Firefox零星地顯示文件流而不是文檔

alt text http://img31.imageshack.us/img31/7907/displaybytes.png alt text http://img193.imageshack.us/img193/7246/displayendofstream.png alt text http://img211.imageshack.us/img211/1774/timeout.png

這裏是響應頭:

HTTP/1.1 200 OK 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Length: 103185 
Content-Type: application/pdf 
Expires: -1 
Server: Microsoft-IIS/7.0 
X-AspNet-Version: 2.0.50727 
Content-Description: stuff.pdf 
Content-Disposition: inline;filename="stuff.pdf" 
X-Powered-By: ASP.NET 
Date: Mon, 22 Feb 2010 16:15:38 GMT 

回答

0

看起來它沒有完成請求。解決辦法是把Response.End()放在最後。

1

這可能也與分配給MIME類型的文檔的動作做。例如在FF這個actions can be set

但當然你也需要確保服務器正在流式傳輸correct mime type

+0

我相信mime類型設置正確。我正在下載PDF,Content-Type是application/pdf –

1

我認爲這個問題很可能在Firefox或Acrobat插件中。

只要有時候有些東西有效,但不是其他的,你就必須非常關注差異。問題總是存在差異。

就你而言,你可能永遠不知道爲什麼,因爲這些差異可能在瀏覽器或插件中。你的標題看起來應該看起來像。它適用於所有其他瀏覽器。根據你的頭文件,這也是它應該在瀏覽器中運行的方式。

我會對Mozilla提出這個問題,看看他們有什麼要說的。

作爲潛在的解決方法,您可以嘗試在用戶的瀏覽器爲FF時將您的內容處置更改爲「附件」。這會導致「打開或保存」對話框出現。然後你的用戶仍然可以點擊「打開」在頁面中查看它。

Content-Disposition: attachment; filename=stuff.pdf 
0

我們已經有這個問題,當PDF文件被內聯呈現在源代碼管理下,它是隻讀的。我們正在使用VSS進行源代碼管理,當我們部署PDF時,它完全像您屏幕截圖中的樣子。然後,我們把PDF的新副本,然後它工作得很好。也許檢查PDF是否只讀,如果是這樣,請嘗試取出只讀屬性並重試。

希望這會有所幫助。

感謝,

拉賈

0

如果你右擊並保存爲它保存爲PDF格式正確,你可以看看?我懷疑你寫錯了PDF或你的標題是錯誤的。