我有一个自定义的HttpHandler,它调用web服务来获取文件。在测试中,我调用生产webservice并且HttpHandler正确地返回文件。当我在服务器上的生产环境中测试它时,它也可以工作。但是,如果我从远程客户端(而不是在服务器上)调用HttpHandler,则文件名和大小设置正确,但下载的文件字节为零。有什么想法吗?
答案 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();
添加该行代码后,它开始在生产环境中工作。然而,我觉得这很奇怪,这是在服务器而不是任何客户端。任何人都可以阐明为什么会这样?