ASP.NET Response.Rewrite сначала не работает - PullRequest
0 голосов
/ 20 июля 2011

Редактировать: проблема решена. Спасибо всем за ваши предложения.

Работа над коммерческим продуктом для печати заданной страницы в PDF.

Система работает так, что страница PrintToPDF.aspx загружается, а сведения о конвертируемой странице отправляются через аргументы post.

Функция Page_Loaded создает файл PDF с использованием wkHtmlToPdf, а затем использует Response.Write, чтобы написать новые страницы для загрузки этого файла PDF, например:

Response.Clear();<br> Response.Write("<html><body onload=\"parent.OpenPDF('tmp/" + Path.GetFileName(sPdfFile) + "');\"></body></html>");

Страница ASPX по умолчанию содержит следующий код:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PrintToPdf.aspx.cs" Inherits="DataServer.PrintToPdf" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>X-Info Maps Print to PDF</title>
    </head>
    <body onload="alert('An error occurred generating the pdf');">
    </body>
</html>

Итак, ДОЛЖНО произойти, если генерируется PDF (это работает правильно), а затем HTML-ответ страницы переписывается для загрузки PDF с помощью вызова Javascript, присоединенного к событию onload.

INSTEAD, несмотря ни на что, срабатывает оповещение страницы по умолчанию. Я проследил через программу, и она определенно вызывает функции Response.Clear () и .Write ().

Что интересно, после первого сбоя, если я нажимаю кнопку printToPdf второй раз, она корректно загружает страницу PDF.

Любые намеки на то, что идет не так?

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

в конце вам нужно Response.End()

РЕДАКТИРОВАТЬ - поэтому ваш код должен выглядеть так:

Response.Clear();
Response.Write("<html><body onload=\"parent.OpenPDF('tmp/" + Path.GetFileName(sPdfFile) + "');\"></body></html>"); 
Response.End();
0 голосов
/ 20 июля 2011

Переместите этот код response.write в событие page_prerender из page_load.Это должно работать.

0 голосов
/ 20 июля 2011

Итак, оказалось, что была отдельная проблема, приводящая к тому, что ветвь кода не запускалась.(Я забыл включить WaitForExit в процесс, в котором я выполнял wkHtml2PDF = S)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...