1

我有一个自定义 HttpHandler 调用 web 服务来获取文件。在测试中,我调用了生产 web 服务并且 HttpHandler 正确地返回了文件。当我在服务器上的生产环境中对其进行测试时,它也可以正常工作。但是,如果我从远程客户端(不在服务器上)调用 HttpHandler,则文件名和大小设置正确,但下载的文件字节为零。有任何想法吗?

4

1 回答 1

1

所以这是交易。我创建了一个多部分范围处理程序(您需要实现 RFC 才能将内容流式传输到 iPhone 或 Adob​​e Reader)。该规范假设在客户端请求一个字节范围而不是整个数组时启用处理文件。当客户想要整个 BLOB 时,我的处理程序出现了问题:

if (context.Request.Headers[HEADER_RANGE] != null)
{
  ...
}
else
{
    context.Response.ContentType = contentItem.MimeType;
    addHeader(context.Response, HEADER_CONTENT_DISPOSITION, "attachment; filename=\"" + contentItem.Filename + "\"");
    addHeader(context.Response, HEADER_CONTENT_LENGTH, contentItem.FileBytes.Length.ToString());
    context.Response.OutputStream.Write(contentItem.FileBytes, 0, contentItem.FileBytes.Length);
}

注意有什么遗漏???

我忘了包括:

context.Response.Flush();

添加那行代码后,它开始在生产环境中工作。然而,我觉得这很奇怪,这是在服务器上而不是在任何客户端上工作的。任何人都能够阐明为什么会这样?

于 2009-05-23T19:20:18.643 回答