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