HttpContext.Current.Response.AddHeader() не задава заглавка Content-Type

Използвам софтуер на трета страна за изобразяване на PDF файлове от html документи. Създадох малък тестов проект и с помощта на събитието OnClick на <asp:Button> успях да прочета html документ от директория и да го изобразя като PDF без проблеми.

Отговорът се създава, както следва:

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");
HttpContext.Current.Response.AddHeader("Content-Disposition", 
    String.Format("{0}; filename=Test.pdf;", "inline" ));
HttpContext.Current.Response.BinaryWrite(pdfBuffer);
HttpContext.Current.ApplicationInstance.CompleteRequest();

Когато гледам отговора в Chrome, виждам, че Content-Type е зададен правилно:

Разпределение на съдържанието: inline; име на файл=HtmlToPdf.pdf;

Съдържание-дължина:101482

Тип съдържание: приложение/pdf

Опитах се да прехвърля горното в текущия си проект. Единствената разлика е, че вместо едно <asp:Button> използвам персонализиран бутон в мрежов изглед на DevExpress. Първоначално обработих персонализираното щракване върху бутон в панел за обратно извикване, но Content-Type не беше зададен. Прегледът на отговора в Chrome доказа това:

Разпределение на съдържанието: inline; име на файл=5.pdf;

Кодиране на съдържание:gzip

Съдържание-дължина:149015

Content-Type:text/plain; charset=utf-8

Опитах също да използвам събитието gvDocuments.CustomButtonCallback += new ASPxGridViewCustomButtonCallbackEventHandler(gvDocuments_CustomButtonCallback);, но Content-Type все още не е зададен.

Някой има ли идеи защо не мога да задам Content-Type в горния сценарий?


person MattSull    schedule 25.11.2013    source източник
comment

Мисля, че вашият прагов метод не е правилно посочен

Imgproc.threshold(mask, mask, 13, 255, Imgproc.THRESH_OTSU);

От документи

Също така специалната стойност THRESH_OTSU може да се комбинира с една от горните стойности

Мисля, че може да се наложи да опитате:

Imgproc.threshold(mask, mask, 13, 255, Imgproc.THRESH_OTSU | Imgproc.THRESH_BINARY);

Например

  -  person Chris Haas    schedule 25.11.2013
comment
Дори не се изобразява. Отговорът е 200 OK, но Content-Type е text/plain. Отстранявам грешки локално, така че е с VS сървър за разработка. Има ли някаква причина, поради която не трябва да се задава в събитие за щракване на потребителски бутон за обратно извикване/мрежов изглед?   -  person MattSull    schedule 25.11.2013


Отговори (2)


Можете да опитате

HttpResponse response = HttpContext.Current.Response;
response.ClearContent();
response.Clear();

response.ContentType = "приложение/pdf";

response.AddHeader("Content-Disposition", "attachment; filename=" + yourFileName + ".pdf");
stream.WriteTo(response.OutputStream);
response.Flush();
response.End();

дано работи :)

person BMaximus    schedule 03.05.2014
comment
Работи като чар. Благодаря! - person MattParra; 27.08.2015

Dim Resp As HttpResponse = HttpContext.Current.Response
Resp.Headers.Remove("X-Frame-Options")
Resp.AppendHeader("X-Frame-Options", "SAMEORIGIN")

Чрез добавяне на горните редове в метода за зареждане/инициализация на страницата ще се добави заглавка на http отговора.

person Prakash Pengoria    schedule 21.09.2017