Проблема с Response.TransmitFile и Apache - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть фрагмент кода 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 перезагружает страницу.

Я пробовал это с другими типами файлов, с другим ContentType, WriteFile вместо TransmitFile, используя AddHeader для предоставления Content-Length и Content-Disposition и BufferOutput. Короче говоря, у меня заканчиваются идеи о том, как вообще понять, что не так. Любые идеи приветствуются.

1008 * кД *

1 Ответ

2 голосов
/ 16 ноября 2011

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

    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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...