Нет исключений, даже если значение maxBufferSize меньше размера ответного сообщения в WCF
У меня есть операция wcf, которая отправляет байтовый массив клиенту.
Максимальный размер байтового массива, который я намереваюсь отправить, составляет 2 МБ. Поэтому я установил maxbuffersize и maxreceivedmessagesize в 2097152 (2 МБ) для привязки basichttp с помощью Transfermode=buffered на сервере.
Несмотря на эти настройки, исключение переполнения буфера не генерируется, если я передаю файл 17 Мб?
Благодарю.
1 ответ
ОБНОВИТЬ:
Мое понимание буферизации в WCF и влияния различных значений было неверным. Пожалуйста, ознакомьтесь с этой веткой MSDN и с соответствующим сообщением в блоге о тонкостях управления буфером WCF.
Тем не менее, я до сих пор не могу найти окончательный ответ о том, как ограничить буферы на сервере. Из того, что я понимаю, если вы ограничиваете maxBufferPoolSize
(всего для пула всех буферов) и maxBufferSize
(максимальный размер для одного буфера) на стороне сервера, вы должны быть в состоянии достичь того, что вы пытаетесь сделать.
Так что в вашем случае вы должны установить maxBufferSize
до 2Мб на сервере, и maxBufferPoolSize
до 2 МБ или более, также на сервере. На клиенте установите maxReceivedMessageSize
также до 2mb.