Исключение WCF — ошибка при обработке запроса.

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

Вот мой стек ошибки:

  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)

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

<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>

Мне не хватает какой-то конфигурации здесь?


person Sabby62    schedule 28.09.2015    source источник
comment
У меня точно такая же проблема. Я подозреваю, что есть проблема с десериализацией ответа, но на этот счет у меня нет решения.   -  person AntonK    schedule 12.04.2016


Ответы (2)


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

...
<important_parameters>
   ....
</important_parameters>
<Paging>
   <EndTo>0</EndTo>
</Paging>
...
person mutlugokhan    schedule 24.02.2017

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

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}
    }
});
person Aaron L. Johnson    schedule 12.09.2017