如何在使用WCF客户端时以编程方式设置MaxReceivedMessageSize?

Pra*_*att 16 wcf

我想以编程方式在我的客户端中将MaxReceivedMessageSize属性设置为某个更高的限制(由于(400)错误请求错误).这是我正在使用的代码......

WCFServiceTestClient wcfClient = 
    new WCFServiceTestClient(new wsHttpBinding(), strServiceURL);
Run Code Online (Sandbox Code Playgroud)

我的服务网址是动态的,因此无法使用web.config.

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

我究竟做错了什么?

Che*_*eso 23

您是否尝试重新排序调用,以便在实例化客户端之前设置MaxReceivedMessageSize?例如,

var binding = new wsHttpBinding();
binding.MaxReceivedMessageSize = Int32.MaxValue; 
var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 
Run Code Online (Sandbox Code Playgroud)

但是,这可能会或可能不会帮助您解决400错误.


Mar*_*tin 9

我在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));
Run Code Online (Sandbox Code Playgroud)