Iis-7

IIS7 二進制流錯誤

  • June 29, 2012

我很難理解我所看到的問題,所以如果問題含糊不清,請接受我的道歉。我在 IIS7 中執行一個經典的 asp 應用程序,除了一個讓我難過的問題外,一切似乎都執行良好。

基本上,可以使用 Persits ASP Upload 組件的 sendBinary 方法從伺服器下載文件。該組件適用於上傳等,只是下載有問題。

奇怪的是,我不能有一個純 asp 頁面來提供二進製文件。在 II6 中一切正常,但在 II7 中出現了一個奇怪的問題。例如,這不起作用。

<%
SET objUpload = server.createObject("Persits.Upload")
   objUpload.sendBinary "D:\sites\file.pdf", true, "application/octet-binary", true
SET objUpload = NOTHING
%>

但是,如果我在 asp 程式碼前面放置任何內容,則該文件可以正常使用。

serve this
<%
SET objUpload = server.createObject("Persits.Upload")
   objUpload.sendBinary "D:\sites\file.pdf", true, "application/octet-binary", true
SET objUpload = NOTHING
%>

我也可以先在響應流中寫一些東西,它工作正常。

<%
Response.Write("server this")
SET objUpload = server.createObject("Persits.Upload")
   objUpload.sendBinary "D:\sites\file.pdf", true, "application/octet-binary", true
SET objUpload = NOTHING
%>

有沒有人對可能導致這種情況的原因有任何想法,或者有沒有人遇到過類似的情況?我確定這與 IIS 7 中的設置有關。

這是 IIS7.5(Windows 2008)的一個已知問題。他們現在在我的預設設置上具有“分塊編碼”,您不能再發送“內容長度”標頭。

當您為第二個參數傳遞“true”時,Persits aspupload 會設置它。

我不確定為什麼 MSFT 沒有修復這個錯誤。

您可以在以下位置找到解決方法:http: //support.persits.com/show.asp ?code=PS100721176

引用自:https://serverfault.com/questions/134525