2017-02-13 3 views
1

У меня есть сервер WCF,Отправить Big Data в WCF - (413) Request Entity Too

при подключении клиента (WinForm) Я установленный код связывания параметра с этим кодом:

String HTTP_SERVER = http:\\....... 

private static BasicHttpBinding getBinding() 
{ 
    //WSHttpBinding binding = new WSHttpBinding(); 
    BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None); 

    binding.TextEncoding = System.Text.Encoding.UTF8; 
    binding.ReaderQuotas.MaxArrayLength = int.MaxValue; 

    binding.ReceiveTimeout =new TimeSpan(8, 0,0); 
    binding.SendTimeout = new TimeSpan(8, 0, 0); 

    binding.MaxReceivedMessageSize = int.MaxValue; 
    binding.MaxBufferSize = int.MaxValue; 
    binding.MaxBufferPoolSize = int.MaxValue; 


    binding.ReaderQuotas.MaxDepth = 64; 
    binding.ReaderQuotas.MaxArrayLength= int.MaxValue; 
    binding.ReaderQuotas.MaxStringContentLength = int.MaxValue; 

    return binding; 

} 

ConnectionToServer = new ConnectionToServer (getBinding(), new EndpointAddress(HTTP_SERVER)); 

этот код правильно работать, но теперь мне нужно отправить очень большие данные в массиве, и когда я пытаюсь отправить большой массив у меня есть эта ошибка:

(413) Request Entity Too

Мне нужно настроить это соединение по коду, а не по xml.

Я foud пример, чтобы решить эту problen только XML, но мне нужно установить на C# код

необходимо установить любой параметр в web.config (на стороне сервера WCF)?

+0

ли [это переполнение стека вопрос] (http://stackoverflow.com/questions/12951763/maximum-request -length-above-in-wcf) не отвечают на ваши вопросы? – strickt01

+0

Я стараюсь, но не запускаю @ strickt01 – daniele3004

ответ

1

Если это на клиенте, вы можете добавить следующее поведение вашей ChannelFactory:

public class MaxItemsInGraphBehavior : IEndpointBehavior 
{ 
    public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) 
    { 
    } 

    public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime) 
    { 
     foreach (OperationDescription operation in endpoint.Contract.Operations) 
     { 
      var dc = operation.Behaviors.Find<DataContractSerializerOperationBehavior>(); 
      if (dc != null) 
      { 
       dc.MaxItemsInObjectGraph = int.MaxValue; 
      } 
     } 
    } 

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

    public void Validate(ServiceEndpoint endpoint) 
    { 
    } 
} 
Смежные вопросы