- 題名: ファイルダウンロード時の例外対処
- 日時: 2010/04/07 17:28:43
- ID: 26678
- この記事の返信元:
- (なし)
- この記事への返信:
- [26682] Re[1]: ファイルダウンロード時の例外対処2010/04/08 7:08:01
- ツリーを表示
■No26678に返信(Web素人さんの記事) >「HTTPヘッダーを送信後はリダイレクトできません。」 ヘッダー送信を遅らせてみてはいかがでしょうか。 Response.Flush() をコメントアウトすると善いかと思います。 Response.AddHeader(...) ' Response.Flush() Response.WriteFile(...) Response.End()
2010/04/07(Wed) 17:31:08 編集(投稿者)
2010/04/07(Wed) 17:30:26 編集(投稿者)
2010/04/07(Wed) 17:30:19 編集(投稿者)
ASP.NET3.5(VB.NET)でファイルのダウンロード機能を追加しております。
例外発生時の対処で困っております。。。
ダウンロードするファイルのパスが誤っていたりした場合等のために、Try〜Catchで処理を囲んでおり、
例外が発生した場合には、例外内容を表示するページに移動するようにコーディングしております。
※例外内容を表示するページに移動するのは仕様です。
例外が発生し、Response.Redirectで例外内容を表示するページに移動する際に以下のエラーが発生し、ページ遷移できません。
「HTTPヘッダーを送信後はリダイレクトできません。」
Try
Response.ClearContent()
Response.Buffer = True
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("ファイル.txt"))
Response.Flush()
Response.WriteFile("ダウンロードファイルのフルパス") ←※ここで存在しないパスを指定して落とす
Response.End()
Catch ex As ThreadAbortException
'Response.End()で必ず発生するので、何もしない
Catch ex As Exception
Dim errobj As New ErrorObject
errobj.Message = _messageHelper.GetMessage(_sessionContext, "1181")
errobj.Number = Err.Number
errobj.Description = Err.Description
errobj.Source = Err.Source
Session("ErrorObject") = errobj
Response.Redirect("例外内容表示ページ.aspx")←★
End Try
この場合の回避策は何かございませんでしょうか。
ご教授お願いいたします。