Вопрос

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

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

Я попытался увеличить значения maxReceivedMessageSize и readerQuotas до их максимальных значений, но безуспешно.

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

Два вопроса:

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

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

Это было полезно?

Решение

Ваш вопрос напомнил мне сообщение в блоге Шона Вилдермута, в котором у него возникли проблемы с большими размерами сообщений в приложении 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>

Две вещи:

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top