如何设置.NET客户端Web服务ClientRuntime.MaxFaultSize

ala*_*anl 4 c# wcf wcf-client

我正在调用一个java webservice,它返回一个包含错误列表的FaultException类型.因此响应消息大小总是很大.

在我的c#(clr3.5)客户端中,我收到以下错误

"已超出传入邮件的最大邮件大小限额(65536).要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性."

我相信解决这个问题的方法是设置ClientRuntime.MaxFaultSize msdn-doc

有没有办法在app.config中执行此操作?

Kar*_*ral 5

您必须设置ClientRuntime.MaxFaultSize属性,请参见此处

  1. 创建您的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)
 {
 }
}
Run Code Online (Sandbox Code Playgroud)
  1. 在客户端大小应用创建的行为:

a)到ChannelFactory:


ChannelFactory channelFactory = new ChannelFactory(binding, endPointAddress);
channelFactory.Endpoint.Behaviors.Add(new MaxFaultSizeBehavior(500000));
Run Code Online (Sandbox Code Playgroud)

b)或生成代理:


proxy.Endpoint.Behaviors.Add(new SetMaxFaultSizeBehavior(500000));
Run Code Online (Sandbox Code Playgroud)