string filePath = ExportAndSaveInvoiceAsHtml(invoiceId);
Response.AddHeader("Content-Disposition", "attachment;filename=" + Path.GetFileName(filePath));
Response.WriteFile(filePath);
// Using Response.End() solves the problem
// Response.End();
私はHTML請求書(請求書のgridViewから)をダウンロードできるようにします。結果のファイルには、請求書ファイルのデータ+不要なページhtmlが含まれています。Response.End()は指定されたシナリオで必須ですか?
私はResponse.End()を使用すると、問題を解決しますが、例外が常にスローされます。いくつかのスレッドで例外が設計通りに読み込まれています。しかし、それは確かです、それはいつも応答の切り捨てのような問題を引き起こすでしょうか?
他にどのようにファイルデータを書き込むことができますか?
Btwは、以前はPDFとして請求書を書いていましたが、Response.End()を使用しないと、不完全なファイルのダウンロードが発生しました。
誰かがカスタムデータ/ファイルをレスポンスストリームに書き込むことの基本を伝えることができます。
この例外は、私は内部のそれを包ん無視できるので、まあ、私は今、外側のtryブロックを持っており、ダミーtry { Response.End(); } catch(例外ex) { Logger.LogException(ex); } –
しかし、それは外部のcatchブロックにも入ります。このブロックには、ユーザーにエラーメッセージを表示するコードがあります。 –
@Munish、私は理解できません。例外を飲み込むので、外側のスコープに伝播すべきではありません。 (また、 'Exception'型の代わりに' ThreadAbortException'をキャッチする必要があります)。 –