Раннее закрытие соединения с браузером и возвращение статуса ответа - PullRequest
2 голосов
/ 19 сентября 2011

Я внедряю пользовательский модуль IHttpModule в проект, который фильтрует загрузку файлов и обеспечивает статус загрузки.Я хочу, чтобы пользовательский модуль закрыл соединение раньше (не хочу получать все данные, отправляемые другой стороной, что может быть большим, сохранить входящую пропускную способность).

Возможно ли это с помощью HTTPпротокол?

Я попытался отправить заголовок «ContentLength: 0» и «Connection: close», очистить ответ, закрыть соединение (HttpWorkerRequest.CloseConnection).

workerRequest.SendStatus(400, "Bad request");
workerRequest.SendKnownResponseHeader(HttpWorkerRequest.HeaderContentLength, "0");
workerRequest.SendKnownResponseHeader(HttpWorkerRequest.HeaderConnection, "close");
workerRequest.FlushResponse(false);
workerRequest.CloseConnection();
((HttpApplication)sender).CompleteRequest();

Браузер / firefoxВ ответе отображается сообщение об ошибке «Сброс подключения».Без каких-либо признаков получения каких-либо данных / заголовка / статуса с сервера.

Заранее спасибо.

1 Ответ

1 голос
/ 19 сентября 2011

http-клиент ожидает ответа только после завершения отправки данных. Вам следует изменить клиент так, чтобы он выполнял несколько запросов небольших размеров, чтобы на него можно было отправлять ответ вместо того, чтобы сервер закрывал соединение (что не будет работать и не работает, как вы уже тестировали).

Проверьте обработчик http, реализованный в http://slfileupload.codeplex.com/, для примера того, как это обычно делается.

...