WCF WS выбрасывает MaxReceivedMessageSizeExceeded - PullRequest
2 голосов
/ 17 марта 2011

У меня есть веб-служба WCF, которая принимает некоторые пользовательские объекты и несколько документов, отправляемых в виде байтовых массивов.

Но каждый раз, когда я отправляю документ (не особо большой), WS возвращает 400 неверных запросов, и в журнале трассировки он выдает MaxReceivedMessageSizeExceeded. говоря

System.ServiceModel.ProtocolException: Максимальная квота размера сообщения для входящих сообщений (65536) было превышены. Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize на соответствующий обязательный элемент.

Теперь клиентское приложение имеет это в app.config

<wsHttpBinding>
    <binding name="WSHttpBinding_IReferrals" 
        closeTimeout="00:01:00" openTimeout="00:01:00" 
        receiveTimeout="00:10:00" sendTimeout="00:01:00"
        bypassProxyOnLocal="false" transactionFlow="false" 
        hostNameComparisonMode="StrongWildcard"
        maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
        allowCookies="false">
        <readerQuotas maxDepth="32" 
            maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />

а в WCF web.config у меня есть

<service behaviorConfiguration="WCFReferrals.Service1Behavior"
        name="WCFReferrals.Referrals">
     <endpoint address="" binding="wsHttpBinding" contract="WCFReferrals.IReferrals">
          <identity>
            <dns value="localhost" />
          </identity>
     </endpoint>
     <endpoint address="mex" binding="wsHttpBinding" contract="IMetadataExchange" />
 </service>
 ....
 <binding name="wsHttpBinding" maxBufferPoolSize="2147483647"
          maxReceivedMessageSize="2147483647">
     <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="4096" 
            maxNameTableCharCount="16384" />
 </binding>

Очевидно, что я что-то упускаю, насколько я вижу, у меня есть все максимальные пределы сообщений, установленные waaaaay сверх того, что необходимо ..

Любая помощь будет с радостью принята

спасибо

нац

1 Ответ

2 голосов
/ 17 марта 2011

Прежде всего: на стороне сервера вы определяете конфигурацию привязки с большим размером сообщения, но вы не ссылаетесь на свою конечную точку.

<service behaviorConfiguration="WCFReferrals.Service1Behavior"
         name="WCFReferrals.Referrals">
   <endpoint 
         address="" 
         binding="wsHttpBinding" 
         bindingConfiguration="LargeSizeMessages"  <== you need to reference the binding config (by specifying its name
        contract="WCFReferrals.IReferrals">
    </endpoint>
    .....
  </service>
  ....
  <binding name="LargeSizeMessages"   <== give it a meaningful name
       maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
       <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
           maxArrayLength="2147483647" maxBytesPerRead="4096" 
           maxNameTableCharCount="16384" />
  </binding>

Также: вы делаете то же самое на стороне клиента?Ваша конфигурация на стороне клиента (app.config или web.config) также включает эту конфигурацию привязки большого размера сообщения?Вы ссылаетесь на эту обязательную конфигурацию в элементе <client> .. <endpoint> ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...