2012-01-19 7 views
15

私はこのようなコードを持っています。 Response.End()をResponse.Flush()に置き換えると正常に動作します。 Response.End()とResponse.Flush()の違いは何ですか?違いは()

答えて

17

Response.Flush

すべての現在のクライアントに送信される出力をバッファリングし

軍。 Flushメソッドは、要求処理中に複数回呼び出すことができます。

Response.Endの

クライアントに現在のすべてのバッファリングされた出力を送信し、 ページの実行を停止し、EndRequestのイベントを発生させます。

Response.Writeの後のページで処理を行わず、ページの処理を停止したい場合は、このコードを使用してください。

context.HttpContext.Response.Clear(); 
    context.HttpContext.Response.Write(htmlString);    
    context.HttpContext.Response.Flush(); // send all buffered output to client 
    context.HttpContext.Response.End(); // response.end would work fine now. 
+0

ここで 'End()'の前に 'Flush()'を呼び出すことが本当に必要なのか不思議です。あなたが提供する定義から、 'End'はページの実行を止めて' EndRequest'を上げる前に 'Flush'と同じことをします...なぜ' End() 'の前に' Flush() 'を呼び出すのが賢明ですか? –

+4

nevermind、私は上記のコードを含むコードで複雑な設定をしていて、 'Flush()'を削除すると、スレッドが中止されているという例外が出ます。 –

+1

図のように、End Before Flushを呼び出す必要がないかのように表示されますが、実際にはEnd Without Flushを呼び出すとすべての種類のエラーが発生します。 – Roland

0

MVC

Response.ContentType = "application/octet-stream"; 
      Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);     
      Response.TransmitFile(Server.MapPath(ConfigurationManager.AppSettings["JICDocumentUploads"] + ProspectCode + "\\" + FileName)); 
      Response.End(); 
  • JICDocumentUploadsで文書ファイルをダウンロードする方法:それはweb.config
  • ProspectCodeからのパスを保存したファイルです。これはダウンロード資料
  • ファイルのためのユニークなコードです名前:ダウンロードする選択したファイル
+0

これは、 'Response.End()'と 'Response.Flush()'の違いに関するオリジナルの質問と何が関係していますか? – dr0i

+0

これは全く質問に答えることができませんが、これは完全にテーマ外です – WhatsThePoint