Справочник по веб-службе ASMX, как установить эквивалент MaxReceivedMessageSize

Веб-служба — это веб-служба ASMX (НЕ WCF).

я получаю сообщение об ошибке

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

Я использую прокси, который Visual Studio создает для вас, когда вы добавляете «веб-ссылку» (обратите внимание, что я НЕ добавляю «ссылку на службу», вместо этого я использую веб-ссылку)... это создает прокси, который наследуется от SoapHttpClientProtocol

Может ли кто-нибудь помочь мне понять, как установить эквивалент MaxReceivedMessageSize для этого метода? (Я прошу эквивалент выполнения HttpBinding.MaxReceivedMessageSize = Int32.MaxValue, если бы я использовал WCF)


person Gustavo    schedule 07.07.2014    source источник
comment
Не могли бы вы выложить файл конфигурации?   -  person DBK    schedule 07.07.2014


Ответы (3)


Изменение MaxReceivedMessageSize можно выполнить в файле App.config или в исходном коде перед вызовом метода службы.

 BasicHttpBinding httpBinding = youAddWebServiceName.ChannelFactory.Endpoint.Binding as BasicHttpBinding;
 httpBinding.MaxReceivedMessageSize = int.MaxValue;
person bashkan    schedule 07.07.2014
comment
Это было чрезвычайно полезно. Спасибо. - person Serinus; 25.11.2014
comment
Насколько я понимаю, MaxReceivedMessageSize применяется только к использованию WCF в качестве клиента, поэтому в этом случае это не поможет, потому что OP специально говорит, что они используют веб-ссылку. - person Andy; 21.05.2018

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

<basicHttpBinding>
<binding name="BindingName" maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000" maxBufferSize="20000000" />
</basicHttpBinding>
person kevin    schedule 28.02.2016

Это сообщение специфично для WCF. Я подозреваю, что вы вызываете свою службу ASMX через прокси-сервер клиента WCF (класс клиента наследуется от ClientBase). С другой стороны, типичный клиентский прокси ASMX наследуется от SoapHttpClientProtocol.

Хитрость заключается в том, что если вы просто «Добавите ссылку на службу» из Visual Studio, WCF-подобный прокси-сервер будет создан по умолчанию. Чтобы создать прокси старого типа, вы должны нажать «Дополнительно» в диалоговом окне создателя прокси, а затем «Добавить веб-ссылку» в диалоговом окне дополнительных свойств или вызвать инструмент wsdl.exe из командной строки.

Прокси, созданный в «старом», не имеет квот на сообщения.

Тем не менее использование устаревшей технологии ASMX как для сервера, так и для клиента не рекомендуется.

person Wiktor Zychla    schedule 07.07.2014
comment
Спасибо за ответ, Виктор... да, я использую старую версию (Добавить ссылку на службу > Дополнительно > Добавить веб-ссылку). это создает прокси, который наследуется от SoapHttpClientProtocol - person Gustavo; 07.07.2014
comment
Есть ли какая-либо документация, которая предполагает, что для этого старого способа нет квот на сообщения? - person Gustavo; 07.07.2014
comment
Я использую его в течение многих лет, и не было такого ограничения. Возникает ли тогда исключение с прокси-сервера клиента или с сервера? - person Wiktor Zychla; 07.07.2014