IIS7 二进制流错误

IIS7 二进制流错误

我很难理解我所看到的问题,所以如果问题含糊不清,请接受我的道歉。我在 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 中的设置有关。

答案1

这是 IIS7.5 (Windows 2008) 的一个已知问题。它们现在默认使用“分块编码”,您无法再发送“content-length”标头。

当您将“true”传递给第二个参数时,Persits aspupload 会设置它。

我不确定为什么微软还没有修复这个错误。

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

相关内容