- - PR -
Response.Flush()の後にResponse.Redirect()すると例外が発生
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-17 18:41
asp.net2.0で開発しています。
件名のとおり、Response.Flush()の後にResponse.Redirect()すると例外が発生してしまいます。このような場合の回避策はありますか? Response.Flush()した内容を取り消し、とかできるものなのですか? | ||||||||
|
投稿日時: 2007-08-17 18:47
Redirect するのに Flush する意味が何かありますか?
| ||||||||
|
投稿日時: 2007-08-18 15:25
「Response.Flush()しない」以外の回避策は無いと思います。
Response.Redirect()は、HTTP応答のステータスコードを302にし、HTTPヘッダにリダイレクト先URLを設定します。 ところが、Response.Flush()を先に実行していると、HTTPヘッダを含むHTTP応答はクライアントに送信し始めています。この状態ではもう取り消しが効かないので例外となるわけです。 | ||||||||
|
投稿日時: 2007-08-18 21:27
半年に一回くらい、質問が上がっていると思います。因みに、MSDNに、発生すると書いてあります。 _________________ | ||||||||
|
投稿日時: 2007-08-19 01:12
>違うでしょう。リダイレクトすると、握りつぶせない例外、スレッド中断の例外が、かならず発生します。
いや、それはわかった上で、 >ところが、Response.Flush()を先に実行していると、HTTPヘッダを含むHTTP応答はクライアントに送信し始めています。この状態ではもう取り消しが効かないので例外となるわけです。 こっちの話ではないですかね? >Response.Flush()の後にResponse.Redirect()すると例外が発生してしまいます。 だそうなので。 ちなみにMSDNでは、 HttpException HTTP ヘッダーが送信された後にリダイレクトしようとしました。 と書かれています。 まあ、どんな例外がとか、詳細は書くようにしたほうがいいですよ、と。 | ||||||||
|
投稿日時: 2007-08-20 22:11
え?ThreadAbortException ではなく?確かに「Response.Flush()の後にResponse.Redirect()すると」って表現が気になってはいたのですが。 ↓こんな感じ?
これは、大変失礼しました>いのまたさん |
1