MaxReceivedMessageSize Ошибка при вызове пакетной службы из приложения, но не из SoapUI
У меня очень раздражающая проблема при отправке запроса в веб-сервис.
Одним из параметров сообщения запроса является Batch
, который может быть установлен либо Y
или же N
, Когда я установил это N
нет проблем, и я получаю ответ, содержащий детали для одного заказа.
Тем не менее, когда я установил Batch
в Y
Я вижу эту ошибку:
Дополнительная информация: Превышен максимальный размер квоты для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем элементе привязки.
Чтобы решить эту проблему, я попытался установить MaxReceivedMessageSize
перед вызовом службы:
public Provider.GetMessageResponse GetOrders(bool acceptBatch)
{
var httpBinding = new BasicHttpBinding();
httpBinding.MaxReceivedMessageSize = 2097152;
httpBinding.MaxBufferSize = 2097152;
var request = BuildRequest(acceptBatch);
var client = new Provider.PullServiceClient();
var response = client.PullGetMessage(SecurityToken, request);
return response;
}
Тем не менее, я все еще вижу сообщение об ошибке (хотя я вижу, что httpBinding.MaxReceivedMessageSize
действительно был увеличен после выполнения этого кода), и служба (не размещенная мной) сообщает мне, что сообщения были собраны (что имеет смысл, поскольку кажется, что сообщения блокируются только после того, как они достигают моей системы),
Кроме того, когда я выполняю точно такой же запрос от SoapUI
Приложение использует XML, я получаю пакетный ответ без каких-либо проблем, и я вижу длинный список всех доступных заказов.
Так ли это MaxReceivedMessageSize
свойство относится только к моему заявлению, а не ко всей системе? Если это так, то почему код выше не разрешает это?
1 ответ
Посмотрев, какие перегруженные конструкторы были для Provider.PullServiceClient
Мне удалось решить эту проблему, включив следующие параметры:
var binding = new BasicHttpBinding() { MaxReceivedMessageSize = 2097152, MaxBufferSize = 2097152 };
var endpoint = new EndpointAddress("http://test.providerporal.co.za/testservice/pullservice.svc");
var client = new Provider.PullServiceClient(binding, endpoint);
Так что я предполагаю, что этот предел как-то связан с моим приложением, но HttpBinding
нужно быть связанным, чтобы запросить себя. Надеюсь, это поможет кому-то еще.