Квота Максимального размера сообщения WCF
-
19-09-2019 - |
Вопрос
Я пытаюсь вызвать службу WCF (размещенную в службе Windows, а не IIS) и получаю следующую ошибку:
Квота максимального размера сообщения для входящих сообщений превышена для удаленного канала.Смотрите журналы сервера для получения более подробной информации.
Я попытался увеличить значения maxReceivedMessageSize и readerQuotas до их максимальных значений, но безуспешно.
Я также включил ведение журнала и проверил размер сообщения, которое "отправляется". Это определенно далеко от максимума.Мы говорим об отправке объекта, который сериализован в 372 КБ XML.
Два вопроса:
Кто-нибудь знает, на какие "журналы сервера" ссылается сообщение?Я проверил EventViewer, но там ничего не отображается...
Кто-нибудь знает, какие другие параметры конфигурации могут здесь применяться?
Решение
Ваш вопрос напомнил мне сообщение в блоге Шона Вилдермута, в котором у него возникли проблемы с большими размерами сообщений в приложении Silverlight.Возможно, это поможет вам:
http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF
Шон говорит:
Хитрость заключается в том, чтобы изменить пользовательскую привязку в web.config, чтобы использовать большие значения по умолчанию.Я выбрал 2 МБ, так как это разумный размер.Конечно, установка их на 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>
Две вещи:
можете ли вы показать нам конфигурацию на стороне сервера и клиента (только соответствующие разделы - конечные точки, конфигурация привязки)
изменили ли вы значения с обеих сторон (клиентской и серверной)??
Существует множество настроек размера, на которые вы можете влиять....