Как программно установить MaxReceivedMessageSize при использовании клиента WCF? - PullRequest
16 голосов
/ 16 марта 2010

Я хочу установить для свойства MaxReceivedMessageSize более высокий предел (из-за (400) ошибки неверного запроса) в моем клиенте программно. Это код, который я использую ...

WCFServiceTestClient wcfClient = 
    new WCFServiceTestClient(new wsHttpBinding(), strServiceURL);

URL-адрес моего сервиса является динамическим и, следовательно, не может использовать web.config.

//The following code doesn't seem to take effect
((WSHttpBinding)wcfClient.ChannelFactory.Endpoint.Binding)
        .MaxReceivedMessageSize = 2147483647;

Что я делаю не так?

Ответы [ 3 ]

23 голосов
/ 16 марта 2010

Вы пытались изменить порядок вызовов, чтобы установить MaxReceivedMessageSize до создания экземпляра клиента? например,

var binding = new wsHttpBinding();
binding.MaxReceivedMessageSize = Int32.MaxValue; 
var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 

Это может помочь или не помочь вашей ошибке 400.

9 голосов
/ 22 сентября 2011

У меня были подобные проблемы в моем wcf-сервисе, и я решил их с помощью:

CustomBinding binding = (CustomBinding)PDAServiceContractClient.CreateDefaultBinding();
            HttpTransportBindingElement httpBindingElement = new HttpTransportBindingElement();
            httpBindingElement.MaxBufferSize = Int32.MaxValue;
            httpBindingElement.MaxReceivedMessageSize = Int32.MaxValue;
            binding.Elements.Add(httpBindingElement);

            string address = PDAServiceContractClient.EndpointAddress.Uri.ToString();
            m_proxy = new PDAServiceContractClient(binding, new EndpointAddress(address));
0 голосов
/ 23 августа 2017

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

Dim oClient as WcfClient = New WcfClient
CType(oClient.Endpoint.Binding, ServiceModel.BasicHttpBinding).MaxReceivedMessageSize = Int32.MaxValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...