【问题标题】:HttpHandler Returning Zero Length byte[]HttpHandler 返回零长度字节 []
【发布时间】:2010-10-28 11:32:21
【问题描述】:
我有一个自定义 HttpHandler,它调用 Web 服务来获取文件。在测试中,我调用了生产 web 服务并且 HttpHandler 正确地返回了文件。当我在服务器上的生产环境中对其进行测试时,它也可以正常工作。但是,如果我从远程客户端(不在服务器上)调用 HttpHandler,则文件名和大小设置正确,但下载的文件字节为零。有什么想法吗?
【问题讨论】:
标签:
c#
.net
asp.net
web-services
httphandler
【解决方案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();
添加那行代码后,它开始在生产环境中工作。然而,我觉得很奇怪,这是在服务器上工作而不是在任何客户端上工作。任何人都可以解释为什么会这样?