2015-10-14 6 views
1

у меня есть минимум ASP.NET Handler (.ashx), который возвращает PDF-файл:Нет ответа от ASP.NET HTTP Handler-- только на конкретных клиентов HTTP на конкретных машинах

public void ProcessRequest(HttpContext context) 
     { 

     context.Response.ContentType = "application/pdf"; 
     context.Response.BinaryWrite(File.ReadAllBytes(context.Server.MapPath("~/files/GettingStarted.pdf"))); 

     } 

     public bool IsReusable 
     { 
     get 
     { 
      return false; 
     } 
     } 
    } 

Когда я бегу мой веб-приложение на IIS Express, приложение размещено на localhost: 45050. Если я перейду на localhost: 45050/handler1.ashx на моей главной машине разработки, PDF-файл сканируется, как ожидалось. Если я использую расширение DHC Chrome (HTTP-клиент) чтобы выполнить HTTP GET на локальном хосте: 45050/handler1.ashx, в HTTP 200 OK Код ответа возвращается вместе с бинарными данными:

DHC response on dev machine

ОДНАКО , если я запускаю тот же проект ASP.NET на другой машине, я сталкиваюсь с причудливыми проблемами. С проектом, запущенным локально на localhost: 45050, я все еще могу перейти на localhost: 45050/handler1.ashx в Chrome/Firefox/IE, чтобы загрузить файл. Но когда я использую расширение DHC для выполнения HTTP GET на localhost: 45050/handler1.ashx, ответа нет!

response on alt machine

Я могу решимость локальный: 45050 (главная страница сайта) с помощью DHC на этой альтернативной машины. Сервер отвечает 200 OK и дает целевую страницу.

Но при работе с обработчиком, который возвращает двоичный контент, я не могу получить ответ с сервера с любым HTTP-клиентом, кроме строки URL-адреса браузера. Как браузеры могут разрешать ответ HTTP, когда автономные клиенты HTTP не могут? Кто-нибудь знает, что может здесь происходить? Что может привести к изменению поведения на разных машинах? Я пытаюсь обработать ответ в клиенте JavaScript, но я не получаю никаких данных.

Любая помощь была бы принята с благодарностью. Благодаря!

+1

Не знаю, когда дело доходит до IIS Express, но для обычного IIS проблема может быть с типами MIME. У обоих экземпляров IIS есть сопоставление для расширения .pdf-файла? – Culme

+0

Да, оба экземпляра имеют сопоставление для приложения/pdf. Я решил эту проблему. См. Мой ответ ниже. Спасибо, что посмотрели на это! – jforce

ответ

1

Верхний ответ здесь ...

Best way to stream files in ASP.NET

... проблема решена. Кажется, что писать большие файлы в одном вызове - нет-нет на определенных серверах. Вы должны отрезать ответ вручную.