我正在调用一个java webservice,它返回一种faultexception类型,它包含一个错误列表。所以响应消息的大小总是很大的。
在我的C(CLR3.5)客户机中,我得到以下错误
“已超过传入消息的最大消息大小配额(65536)。若要增加配额,请对相应的绑定元素使用MaxReceivedMessageSize属性。“
我认为解决方法是设置ClientRuntime.MaxFaultSizemsdn-doc
在app.config中有这样做的方法吗?

最佳答案

必须设置ClientRuntime.MaxFaultSize属性,see here
创建MaxFaultSizeBehaviour


public class MaxFaultSizeBehavior : IEndpointBehavior
{
 private int _size;

 public MaxFaultSizeBehavior(int size)
 {
  _size = size;
 }

 public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
 {
 }

 public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
 {
  clientRuntime.MaxFaultSize = _size;
 }

 public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
 {
 }

 public void Validate(ServiceEndpoint endpoint)
 {
 }
}

以客户机大小应用创建的行为:
a)至渠道工厂:

ChannelFactory channelFactory = new ChannelFactory(binding, endPointAddress);
channelFactory.Endpoint.Behaviors.Add(new MaxFaultSizeBehavior(500000));

b)或生成的代理:

proxy.Endpoint.Behaviors.Add(new SetMaxFaultSizeBehavior(500000));

09-25 17:04