2011-01-23 2 views
2

На веб-сайте я фиксирую запрос http POST с помощью HttpModule, как в this answer.Обратный запрос HttpModules как можно быстрее

После прочтения тела POST в событии BeginRequest в контексте я хотел бы как можно быстрее вернуть ответ «OK» клиенту.
Что было бы лучшим способом предотвратить дальнейшую обработку в интегрированном режиме IIS (7.5)?

ответ

3

Я считаю, что это один самый быстрый:

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

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

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

'CompleteRequest' остановит запрос. Джерард хочет на самом деле отправить ответ OK. –

+1

«CompleteRequest» неявно называется «Response.End». Но в последнем случае вы, скорее всего, получите исключение ThreadAbordException (см. Следующую статью в KB: http://support.microsoft.com/kb/312629). Я добавил Response.Flush (хотя я не думаю, что Джерард хотел отправить что-то, кроме кода состояния). – volpav

+0

.End() дает исключение ThreadAbordException, в то время как .CompleteRequest() нет. С другой стороны .Clear(), .ClearHeaders(), .Flush(), похоже, ничего не добавляют. Response.Write («OK») дает ответ OK в теле также при использовании метода CompleteRequest(). – Gerard

1

Вызов HttpResponse.End(). Он очистит любой ожидающий контент (ваш ответ OK), а затем завершает запрос.

Смежные вопросы