Нет исключений, даже если значение maxBufferSize меньше размера ответного сообщения в WCF

У меня есть операция wcf, которая отправляет байтовый массив клиенту.

Максимальный размер байтового массива, который я намереваюсь отправить, составляет 2 МБ. Поэтому я установил maxbuffersize и maxreceivedmessagesize в 2097152 (2 МБ) для привязки basichttp с помощью Transfermode=buffered на сервере.

Несмотря на эти настройки, исключение переполнения буфера не генерируется, если я передаю файл 17 Мб?

Благодарю.

1 ответ

ОБНОВИТЬ:
Мое понимание буферизации в WCF и влияния различных значений было неверным. Пожалуйста, ознакомьтесь с этой веткой MSDN и с соответствующим сообщением в блоге о тонкостях управления буфером WCF.

Тем не менее, я до сих пор не могу найти окончательный ответ о том, как ограничить буферы на сервере. Из того, что я понимаю, если вы ограничиваете maxBufferPoolSize (всего для пула всех буферов) и maxBufferSize (максимальный размер для одного буфера) на стороне сервера, вы должны быть в состоянии достичь того, что вы пытаетесь сделать.

Так что в вашем случае вы должны установить maxBufferSize до 2Мб на сервере, и maxBufferPoolSize до 2 МБ или более, также на сервере. На клиенте установите maxReceivedMessageSize также до 2mb.

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