Как справиться с ошибкой с помощью контент-диспозиции - PullRequest
0 голосов
/ 18 мая 2010

как мне обработать исключение, которое возникает после отправки заголовка Content-Disposition для вложения? Я пытаюсь сгенерировать отчет на сервере и отправить его в виде файла, но если во время генерации отчета возникает исключение, само сообщение об ошибке отправляется в браузер, который по-прежнему принимает его как содержимое файла и показывает «Сохранить как» диалог. Пользователь не может знать, что произошла ошибка при создании отчета, сохраняет файл в неправильном формате.

Есть ли способ отменить ответ с этим заголовком и перенаправить на страницу с ошибкой? Или что еще я могу сделать, чтобы сообщить пользователю об ошибке?

Возможно, я мог бы сгенерировать отчет первым и только в том случае, если не было ошибок, отправив заголовки, но я хочу, чтобы отчет отображался непосредственно в выходной поток Response, чтобы ему не нужно было оставаться в памяти.

Вот мой код:

this.Response.ContentType = "application/octet-stream";
this.Response.AddHeader("Content-Disposition", @"attachment; filename=""" + item.Name + @"""");
this.Response.Flush();

GenerateReportTo(this.Response.OutputStream); // Exception occurs

Спасибо за любые предложения

1 Ответ

1 голос
/ 18 мая 2010

Это не совсем относится к Content-Disposition.

Вы не можете изменить статус HTTP после того, как начнете отправлять тело ответа. Если в этот момент происходит ошибка, единственный известный мне метод оповещения об ошибке - закрыть соединение.

...