HttpHandler Возвращает байт нулевой длины [] - PullRequest
1 голос
/ 23 мая 2009

У меня есть собственный HttpHandler, который вызывает веб-сервис для получения файла. В тесте я вызываю производственный веб-сервис, и HttpHandler возвращает файл правильно. Когда я тестирую его в производственной среде на сервере, он также работает. Однако, если я вызываю HttpHandler с удаленного клиента (не на сервере), имя файла и размер устанавливаются правильно, но загружаемые байты файла равны нулю. Есть идеи?

1 Ответ

1 голос
/ 23 мая 2009

Так вот в чем дело. Я создал обработчик из нескольких частей (вам нужно реализовать 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();

После добавления этой строки кода он начал работать в производственной среде. Однако мне кажется странным, что это работало на сервере, а не на клиентах. Кто-нибудь может пролить свет на то, почему это будет?

...