Проблема с ответом.TransmitFile и Apache

#asp.net #apache

#asp.net #apache

Вопрос:

У меня есть фрагмент ASP.Net Код 2.0 в обработчике загрузки страницы, который выглядит в основном следующим образом:

         Response.Clear();
        Response.ContentType="application/pdf";
        Response.TransmitFile("foo.pdf");
        Response.End();
  

Он отлично работает со всеми браузерами при запуске через IIS или Cassini. Но когда я пытаюсь запустить его через Apache, используя mod_aspdotnet.so (который мне действительно нужно поддерживать и, как правило, не имеет странностей), я получаю различное плохое поведение. В Chrome, Firebird и IE я получаю страницу «OK 200», на которой говорится: «Сервер столкнулся с внутренней ошибкой или неправильной настройкой и не смог выполнить ваш запрос». В Safari это приводит к перезагрузке страницы.

Я пробовал это с другими типами файлов, другим типом содержимого, файлом записи вместо TransmitFile, используя AddHeader для указания длины содержимого и расположения содержимого, а также вывода буфера. Короче говоря, у меня заканчиваются идеи о том, как вообще разобраться, что не так. Приветствуются любые идеи.

kd

Ответ №1:

Я наконец-то заставил это работать. Я не ожидаю, что многие (вообще?) другие люди будут в этой лодке, но если это так, вот что работает:

     Response.Clear();
    Response.ContentType="application/pdf";
    f=new FileStream(targetFile, FileMode.Open);
    byte[] b=new byte[(int)f.Length];
    f.Read(b, 0, f.Length);
    f.Close();
    Response.BinaryWrite(b);
    Response.Flush();