#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 МБ, это было бы легко. Просто нужно иметь в виду.