Максимальный размер сообщения WCF - PullRequest
7 голосов
/ 10 ноября 2009

Я пытаюсь вызвать службу WCF (размещенную в службе Windows, а не IIS) и получаю следующую ошибку:

Максимальная квота размера сообщения для входящие сообщения были превышены для удаленного канала. Увидеть логи сервера для более подробной информации.

Я попытался увеличить MaxReceivedMessageSize и ReaderQuotas до их максимальных значений без какой-либо удачи.

Я также включил ведение журнала и проверил размер сообщения, которое отправляется. Это определенно далеко от максимума. Мы говорим об отправке объекта, сериализованного в 372 КБ XML.

Два вопроса:

  1. Кто-нибудь знает, на какие «серверные журналы» ссылается сообщение? Я проверил EventViewer, но там ничего не появляется ...

  2. Кто-нибудь знает, какие другие параметры конфигурации могут применяться здесь?

Ответы [ 4 ]

5 голосов
/ 10 ноября 2009

Ваш вопрос напомнил мне сообщение в блоге Шона Вильдермута, где у него были проблемы с большими размерами сообщений в приложении Silverlight. Возможно, это поможет вам:

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF

Шон говорит:

Хитрость заключается в том, чтобы изменить customBinding в web.config для использования больших значений по умолчанию. Я выбрал 2MB, так как это разумный размер. Конечно, установка их на 2 ГБ, как показано выше, будет работать, но это сделает вас более уязвимыми для атак. Выберите размер, который не превышает ваш самый большой запрос, но не слишком велик. Это игра в догадки. Чтобы установить их, вам нужно добавить их в ваш web.config, чтобы поместить их в узел httpTransport:

1 голос
/ 10 ноября 2009

Вы можете указать журналы сервера и путь в конфигурации приложения следующим образом

 <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>
1 голос
/ 10 ноября 2009

Я думаю, что журналы сервера означают файлы трассировки и ведения журнала, которые создаются при включении этого. Вот ссылка MSDN .

Свойства, с которыми я сталкиваюсь с WCF, которые должны иметь более высокое значение в приложениях, которые я пишу, это maxReceivedMessageSize, maxStringContentLength, maxArrayLength и maxBufferSize. Попробуйте увеличить их и посмотреть, что произойдет. WCF может быть трудной для отладки, так как он любит проглатывать исключения.

0 голосов
/ 10 ноября 2009

Две вещи:

  • можете ли вы показать нам конфигурацию сервера и клиента (только соответствующие разделы - конечные точки, конфигурация привязки)

  • изменили ли вы значения с обеих сторон (клиент и сервер) ??

Существует целый ряд настроек размера, на которые вы можете повлиять ....

...