2009-11-10 3 views
7

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

The maximum message size quota for incoming messages has been exceeded for the remote channel. See the server logs for more details.

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

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

Два вопроса:

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

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

ответ

5

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

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

Шон говорит:

The trick is to change the customBinding in the web.config to use larger defaults. I picked 2MB as it its a reasonable size. Of course setting them to 2GB like shown above will work but it does leave you more vulnerable to attacks. Pick a size that isn't larger than your largest request but isn't overly large. Its a guessing game. To set these, you need to add them to your web.config is to put them on the httpTransport node:

+0

Спасибо! Эта статья была действительно полезна. – manu08

1

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

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

1

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

<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

Я добавил этот элемент конфигурации в свое приложение-службу и получаю файл журнала. Однако он просто показывает отправку сообщения, которое взрывается. Он ничего не показывает о фактической ошибке или добавлении вообще. – manu08

0

две вещи:

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

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

Там целое множество настроек размера вы можете влиять ....

Смежные вопросы