的問題是在ClientRuntime「MaxFaultSize」參數,默認值是65535,所以你不能在默認情況下通過大型有效載荷在WCF的故障。要更改此值,您應該定製EndpointBehavior這樣寫:
public class MaxFaultSizeBehavior : IEndpointBehavior
{
private readonly int _size;
public MaxFaultSizeBehavior(int size)
{
_size = size;
}
public void Validate(ServiceEndpoint endpoint)
{
}
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.MaxFaultSize = _size;
}
}
,並將其應用在創建代理時客戶代碼端點:
_clientProxy.Endpoint.Behaviors.Add(new MaxFaultSizeBehavior(1024000));
,或者不代理,只投客戶添加行爲:
_client = new MyServiceClient();
((ClientBase<IMyService>) _client).Endpoint.Behaviors.Add(new MaxFaultSizeBehavior(1024000));
之後,一切都會好起來的。 我花了很多時間搜索答案,希望這有助於某人。
有趣的發現。好你發佈答案:) – HockeyJ