У нас есть приложение, использующее привязку http со следующей конфигурацией на стороне клиента:
<binding name="SecureStreamedHttpBinding"
transferMode="Streamed"
maxReceivedMessageSize="8000000000"
maxBufferSize="65536"
sendTimeout="00:20:00">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
И эта конфигурация на стороне сервера:
<binding name="SecureStreamedHttpBinding_IHub"
transferMode="Streamed"
maxReceivedMessageSize="8000000000"
maxBufferSize="65536"
receiveTimeout="00:20:00">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
Канал открывается клиентом путем создания ChannelFactory и последующего вызова CreateChannel:
ChannelFactory<IHub> channelFactory = new ChannelFactory<IHub>(endpointConfigurationName);
IHub hub = channelFactory.CreateChannel();
((IClientChannel)hub).Open();
Иногда, когда мы пытаемся передать большие файлы по этому соединению, мы получаем от сервера сообщение об ошибке: «Удаленный сервер вернул неожиданный ответ: (413) Запрос объекта слишком велик». Я говорю иногда, потому что кажется, что существует ряд факторов времени/скорости, которые могут вызывать появление и исчезновение ошибки. Например, ошибки кажутся более распространенными на машинах с высокой пропускной способностью. Они кажутся менее распространенными, когда начинаются после того, как соединение установлено. Однако влияние времени/скорости непоследовательно.
Если TLS отключен, у нас никогда не возникает проблем.
Мы подключили Wire Sharked к соединению и обнаружили, что клиент отправляет сообщение «FIN» на порт примерно в то же время, что и ошибка, но мы не знаем точно, когда возникает ошибка 413, потому что мы не видим ее в Проволочная акула. Так что мы не знаем, причина это или следствие.
Мы также просмотрели информацию об отслеживании неудачных запросов от IIS и обнаружили, что «Сущность запроса слишком велика» указана вместе с данными, которые передавались в то время, но мы не уверены, как интерпретировать то, что мы видим.
Мы не знаем, почему клиент выдает FIN? Это нормально? Является ли это причиной ошибки «Request Entity Too Large» на сервере или наоборот. Или просто совпадение? В любом случае эффект заключается в том, что мы должны перезапустить передачу файла в этот момент. Любая мысль о том, что может быть основной причиной ошибки?
Заранее спасибо за вашу помощь.