#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();