Ошибка в квоте максимального размера сообщения для входящих сообщений (65536)

#asp.net #web-services #web-config

#asp.net #веб-сервисы #web-config

Вопрос:

У меня вышеприведенная ошибка при вызове функции webservice (например, GetUserInfo). эта функция возвращает много данных, но не более 65 КБ, также я установил maxReceivedMessageSize равным 2000000000 в моей конфигурации в клиенте. ServiceModel моего конфигурационного файла :

 <system.serviceModel>
<bindings>
  <customBinding>
    <binding name="AAAServerSoap12Binding">
      <textMessageEncoding maxReadPoolSize="2000000000" maxWritePoolSize="2000000000"
        messageVersion="Soap12">
        <readerQuotas maxDepth="32" maxStringContentLength="2000000000"
          maxArrayLength="2000000000" maxBytesPerRead="2000000000"  maxNameTableCharCount="2000000000" />
      </textMessageEncoding>
      <httpTransport maxBufferPoolSize="2000000000" maxReceivedMessageSize="2000000000"
        maxBufferSize="2000000000" />
    </binding>
  </customBinding>
 </bindings>
 <client>
  <endpoint address="http://10.187.110.5:8280/services/AAAServer.AAAServerHttpSoap12Endpoint"
    binding="customBinding" bindingConfiguration="AAAServerSoap12Binding"
    contract="AAAServiceReference.AAAServerPortType" name="AAAServerHttpSoap12Endpoint"  />
</client>
</system.serviceModel>
 

каждый раз, когда я получаю эту ошибку, я сохраняю XML-результат GetUserInfo в файл, и этот файл был 24 КБ — 50 КБ), и никогда не достигает 65 КБ или более. Ошибка

 Server was unable to process request. ---> The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element. ---> The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
 

Спасибо

Комментарии:

1. я решил свою проблему, добавив maxReceivedMessageSize=200000000 amp;amp; MaxBufferPoolSize=»2000000000″ на стороне сервера в service-web.config, а затем добавить к клиенту тоже.

2. Ваш подход верен, просто имейте в виду, что 200 000 000 байт равно 190 МБ, вам лучше надеяться, что вы никогда не получите запрос такого размера, если у вас нет серьезной вычислительной мощности. Может быть, сделать это 100 000 000, что все еще велико.

3. спасибо, Namphibian, вы правы

4. Имейте в виду, что при чрезвычайно большом допустимом размере пользователи могут запускать атаки типа «отказ в обслуживании» на ваш сервис.

5. Отсутствие установки этого высокого значения позволит злоумышленнику отправлять очень большие плохо сформированные пакеты, что облегчит проведение DOS-атаки. Меньшее значение означает, что им придется отправить намного больше пакетов, прежде чем система безопасности поймет, что происходит. Если бы я мог провести DOS-атаку с помощью запроса XML размером 200 МБ, это было бы легко. Просто нужно иметь в виду.