У меня есть кнопка, которая при нажатии создаст PDF-файл и запишет его в ответ.
Это базовая структура кода:
try
{
using(Stream stream = generatePdf())
{
var file = createFile(stream);
file.Transmit(HttpContext.Current.Response);
}
}
catch (Exception ex)
{
// Handle exception
// Display Error Message
}
Способ передачи содержит следующий код:
response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}", filename));
response.AddHeader("Content-Length", bytes.Length.ToString());
response.ContentType = "application/octet-stream";
response.BinaryWrite(bytes);
Загрузка файла работает нормально, за исключением того, что он не завершает обратную передачу.
Если бы я выбросил исключение выше file.Transmit
, обработка ошибок работала бы правильно, и я бы увидел сообщение, отображаемое в моем браузере. Однако, если после file.Transmit
есть исключение, то ничего не происходит. Пользователь сохраняет / открывает PDF, и страница не перезагружается.
Как я могу сделать так, чтобы постбэк всегда завершался, чтобы я мог отобразить соответствующее сообщение пользователю?