Справочник по веб-сервису ASMX, как установить эквивалент MaxReceivedMessageSize
Веб-сервис - это веб-сервис ASMX (НЕ WCF)
Я получаю ошибку
Превышен максимальный размер квоты для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем элементе привязки.
Я использую прокси-сервер, который Visual Studio генерирует для вас, когда вы добавляете "Web Reference" (обратите внимание, что я НЕ добавляю "Service Reference", вместо этого я использую Web Reference)... это создает прокси, который наследуется от SoapHttpClientProtocol
Может кто-нибудь помочь мне понять, как установить эквивалент MaxReceivedMessageSize
для этого метода? (Я прошу эквивалент делать HttpBinding.MaxReceivedMessageSize = Int32.MaxValue
если бы я использовал WCF)
3 ответа
Это сообщение относится к WCF. Я подозреваю, что затем вы вызываете службу ASMX через клиентский прокси WCF (класс клиента наследуется от ClientBase
). С другой стороны, типичный клиентский прокси ASMX наследуется от SoapHttpClientProtocol
,
Хитрость заключается в том, что если вы просто "добавляете ссылку на службу" из Visual Studio, WCF-подобный прокси создается по умолчанию. Чтобы создать прокси старого типа, вы должны нажать "Дополнительно" в диалоговом окне создания прокси, а затем "Добавить веб-ссылку" в диалоговом окне расширенных свойств или вызвать wsdl.exe
инструмент из командной строки.
Прокси, созданный в "старом", не имеет квот сообщений.
Тем не менее, использование устаревшей технологии ASMX, как для сервера, так и для клиента, не рекомендуется.
Изменение MaxReceivedMessageSize можно выполнить в файле App.config или в исходном коде перед вызовом метода службы.
BasicHttpBinding httpBinding = youAddWebServiceName.ChannelFactory.Endpoint.Binding as BasicHttpBinding;
httpBinding.MaxReceivedMessageSize = int.MaxValue;
Может быть, это поможет кому-то. Я получаю то же сообщение об ошибке в веб-службе ASMX, но оно не с сервера! это было от клиента, и я просто добавляю это в конфигурацию клиента:
<basicHttpBinding>
<binding name="BindingName" maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000" maxBufferSize="20000000" />
</basicHttpBinding>