HttpHandler返回零长度字节[]

时间:2009-05-23 18:48:45

标签: c# .net asp.net web-services httphandler

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

1 个答案:

答案 0 :(得分:1)

所以这是交易。我创建了一个multipart range handler(您需要实现RFC才能将内容流式传输到iPhone或Adobe 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();

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