Редактировать: проблема решена. Спасибо всем за ваши предложения.
Работа над коммерческим продуктом для печати заданной страницы в 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.
Любые намеки на то, что идет не так?