3

パフォーマンスに問題を引き起こさhttpResponse.End()ないものに置き換える方法を知っている人はいますか? ThreadAbortException誰かが「HttpContext.Current.ApplicationInstance.CompleteRequest()」を実行することを提案しましたhttpResponse.End()が、バッファリングされたデータをクライアントに送信するなど、すべてが実行されるわけではありません。これは私にとって問題です。

4

2 に答える 2

3

まず、これが本当に重大な問題を引き起こしているとは思えません。ただし、とにかく一般的には良いアイデアではありません...それは例外の悪用です。(とにかく、IMO。)

ドキュメントから:

このメソッドは、ASP との互換性、つまり、ASP.NET より前の COM ベースの Web プログラミング テクノロジとの互換性のためにのみ提供されています。EndRequest イベントにジャンプしてクライアントに応答を送信する場合は、CompleteRequest代わりに呼び出します。

を呼び出した後も現在のメソッドが続行されることは明らかCompleteRequestなので、現在のイベントの処理を完全に完了する必要があります。

于 2013-01-24T20:28:13.167 に答える
1

わかりました、ここで答えを見つけることができました。「Jay Zalos」の回答まで下にスクロールすると。httpResponse.End()次の3行に置き換えました。

Response.Flush()
Response.SuppressContent = True
HttpContext.Current.ApplicationInstance.CompleteRequest()
于 2013-01-24T20:57:12.063 に答える