Максимальный размер сообщения WCF
Я пытаюсь вызвать службу WCF (размещенную в службе Windows, а не IIS) и получаю следующую ошибку:
Максимальный размер сообщения для входящих сообщений превышен для удаленного канала. Смотрите журналы сервера для более подробной информации.
Я попытался увеличить MaxReceivedMessageSize и ReaderQuotas до их максимальных значений без какой-либо удачи.
Я также включил ведение журнала и проверил размер сообщения, которое "отправлено". Это определенно далеко от максимума. Мы говорим об отправке объекта, который сериализован в 372 КБ XML.
Два вопроса:
Кто-нибудь знает, на какие "серверные журналы" ссылается сообщение? Я проверил EventViewer, но там ничего не появляется...
Кто-нибудь знает, какие другие параметры конфигурации могут применяться здесь?
4 ответа
Ваш вопрос напомнил мне сообщение в блоге Шона Вильдермута, где у него были проблемы с большими размерами сообщений в приложении Silverlight. Возможно, это поможет вам:
http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF
Шон говорит:
Хитрость заключается в том, чтобы изменить customBinding в web.config для использования больших значений по умолчанию. Я выбрал 2MB, так как это разумный размер. Конечно, установка их на 2 ГБ, как показано выше, будет работать, но это сделает вас более уязвимыми для атак. Выберите размер, который не превышает ваш самый большой запрос, но не слишком велик. Это игра в догадки. Чтобы установить их, вам нужно добавить их в ваш web.config, чтобы поместить их в узел httpTransport:
Я думаю, что журналы сервера означают файлы трассировки и журналирования, которые создаются при включении. Вот ссылка на MSDN.
Свойства, с которыми я сталкиваюсь с WCF, которые должны иметь более высокое значение в приложениях, которые я пишу, это maxReceivedMessageSize, maxStringContentLength, maxArrayLength и maxBufferSize. Попробуйте увеличить их и посмотреть, что произойдет. WCF может быть трудной для отладки, так как он любит проглатывать исключения.
Вы можете указать журналы сервера и путь в конфигурации приложения следующим образом
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel"
switchValue="Critical, Error, Warning"
>
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="F:\log-data\ServiceTrace.svclog"
/>
</listeners>
</source>
</sources>
</system.diagnostics>
Две вещи:
Можете ли вы показать нам конфигурацию сервера и клиента (только соответствующие разделы - конечные точки, конфигурация привязки)
Вы изменили значения с обеих сторон (клиент и сервер)??
Существует целое множество настроек размера, на которые вы можете повлиять....