По какой причине WCF не поддерживает потоковую передачу запросов по HTTP с HTTP-аутентификацией?

WCF не поддерживает потоковую передачу запросов (или потоковую загрузку больших данных) через HTTP с HTTP-аутентификацией. Мое первое предположение состояло в том, что из-за рукопожатия аутентификации дважды запрос потоковой передачи был отправлен на сервер. Но это также относится и к большим запросам в режиме с буферизацией, поэтому это не имеет смысла.

Вы можете легко реализовать потоковую передачу запросов с помощью HTTP-аутентификации в настраиваемом обработчике http ASP.NET. Если у вас есть контроль над клиентом, вы даже можете избежать "проблемы с несколькими запросами", выполнив явную HTTP HEAD для предварительной аутентификации на сервере, а затем повторно использовать постоянное соединение для выполнения фактического потокового запроса с HTTP POST.

Так может кто-нибудь подумать о причине (ах), которую WCF не поддерживает? (кроме времени на это)

Спасибо

1 ответ

Решение

Причина заключается в том, что вы должны сначала отправить весь запрос (даже потоковый), чтобы получить HTTP 401, а затем выполнить квитирование безопасности и, наконец, снова отправить весь запрос. Поскольку предполагается, что потоковая передача будет использоваться с очень большими сообщениями, этот процесс может быть очень медленным и добавлять нежелательный трафик по сети, поэтому MS, вероятно, разработала решение вообще не разрешать его.

Трюк с запросом HEAD не реализован в WCF.

Другие вопросы по тегам