2015-09-28 5 views
1

Я пытаюсь получить доступ к данным через веб-службу. Мои вызовы webservice работают отлично, но иногда он вызывает ошибку при обработке запроса. See fault detail for additional information exceptionИсключение WCF. Ошибка при обработке запроса.

Вот мой StackTrace ошибки:

at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Я попытался увеличения readerQuotas внутри моего переплета. Вот как мои привязки выглядят

<bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_IWS" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"> 
      <readerQuotas 
      maxDepth="2147483647" 
      maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" 
      maxNameTableCharCount="2147483647" /> 
      <security mode="TransportWithMessageCredential" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://xxxx.svc" 
     binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWS" 
     contract="ABC.IWS" name="BasicHttpBinding_IWS" /> 
    </client> 

Я пропустил какую-то конфигурацию здесь?

+0

У меня точно такая же проблема. Я подозреваю, что существует некоторая проблема, десеризующая ответ, но на этом уровне у меня нет решения. – AntonK

ответ

0

У меня была такая же проблема, и решение - установить все параметры (ы) вызываемой службы. С помощью приложения SOAPUI вы не можете его заметить. Но, как всегда, скрипач говорит правду. Например, сначала вы думаете, что «important_parameters» достаточно, чтобы установить для вызова услуги. И вы считаете, что веб-сервис считает (/ устанавливает себя) «EndTo» параметр 0 ... Неверно! Вы должны установить это намеренно, иначе вы получите ошибку, упомянутую в этом сообщении.

... 
<important_parameters> 
    .... 
</important_parameters> 
<Paging> 
    <EndTo>0</EndTo> 
</Paging> 
... 
0

Для меня первым шагом по устранению неполадок было получение дополнительной информации об ошибке. Из-за того, как работают ответы задачи, может быть много внутренних исключений. Поэтому измените код обработки, чтобы регистрировать внутренние исключения.

var responseTask = client.someRemoteCall(request); 

responseTask.ContinueWith(t => 
{ 
    switch (t.Status) 
    { 
     case TaskStatus.Faulted: 
      foreach (var exception in t.Exception.Flatten().InnerExceptions) 
      { 
       log.Error(exception.Message); 

       if (exception.InnerException != null) 
       { 
        log.Error(exception.InnerException.Message); 
       } 
      } 
      break; 
     case TaskStatus.RanToCompletion: 
      {your success code} 
     default: 
      {some deafult error is thrown} 
    } 
});