2011-01-23 13 views
2

ウェブサイトでは、HTTP POST要求をthis answerのようにHttpModuleで取得します。返信リクエストHttpModulesをできるだけ早く

コンテキストのBeginRequestイベントでPOSTの本文を読み取った後、できるだけ早くクライアントに「OK」応答を返したいと思います。
IIS(7.5統合モード)でのさらなる処理を防ぐ最善の方法は何ですか?

Response.Clear(); 
Response.ClearHeaders(); 

Response.StatusCode = 200; 
Response.StatusDescription = "OK"; 

Response.Flush(); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

答えて

3

は、私はこの1つが最速であると考えています。保留中のコンテンツ(OKレスポンス)をフラッシュしてからリクエストを終了します。

+1

'CompleteRequest'はリクエストを停止します。 Gerardは実際にOK応答を送ろうとしています。 –

+1

"CompleteRequest"は "Response.End"によって暗黙的に呼び出されます。しかし、後者の場合、ThreadAbordExceptionが発生する可能性が最も高くなります(次のKB記事を参照してください:http://support.microsoft.com/kb/312629)。 Response.Flushを追加しました(ただし、Gerardがステータスコード以外のものを送信したかったとは思いませんが)。 – volpav

+0

.End()はThreadAbordExceptionを返しますが、.CompleteRequest()は返されません。一方、.Clear()、.ClearHeaders()、.Flush()は何も追加していないようです。 Response.Write( "OK")は、CompleteRequest()を使用しているときにも本文でOK応答を返します。 – Gerard

1

コールHttpResponse.End()

関連する問題