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 нужно быть связанным, чтобы запросить себя. Надеюсь, это поможет кому-то еще.

Другие вопросы по тегам