WCF показывает ошибку тайм-аута - PullRequest
1 голос
/ 11 декабря 2010

Я только что создал сервисную библиотеку WCF. Я создал тестовую функцию и вызвал тестовую функцию из тестового клиента WCF. Я поставил точку останова в коде. Управление достигает точки останова и останавливается там. Теперь я позволяю элементу управления оставаться в точке прерывания некоторое время и примерно через минуту я получаю следующее сообщение об ошибке

"Не удалось вызвать службу. Возможные причины: служба отключена или недоступна; конфигурация на стороне клиента не соответствует прокси-серверу; существующий прокси-сервер недействителен. Дополнительные сведения см. В трассировке стека. восстановить, запустив новый прокси-сервер, восстановив конфигурацию по умолчанию или обновив службу. "

Сведения об ошибке: Время ожидания канала запроса при ожидании ответа после 00: 00: 59.9843750. Увеличьте значение тайм-аута, переданное вызову Request, или увеличьте значение SendTimeout в Binding. Время, отведенное для этой операции, могло быть частью более длительного времени ожидания.

Трассировка стека серверов: в System.ServiceModel.Channels.RequestChannel.Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Channels.ClientReliableChannelBinder 1.RequestClientReliableChannelBinder 1.OnRequest (канал TRequestChannel, сообщение, тайм-аут TimeSpan, MaskingMode maskingMode) в System.ServiceModel.Channels.ClientReliableChannelBinder 1.Request(Message message, TimeSpan timeout, MaskingMode maskingMode) at System.ServiceModel.Channels.ClientReliableChannelBinder 1.Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Security.SecuritySessionClientSettings`1.SecurityRequestSessionChannel.Request (сообщение, время ожидания TimeSpan) в System.ServiceModel.Dispatcher.RequestChannelBinder.Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call (строковое действие, логический односторонний режим, операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannel.Call (строковое действие, логический односторонний режим, операция ProxyOperationRuntime, Object [] ins, Object [] outs) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (метод IMethodCallMessageCall, операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (сообщение IMessage)

Исключение переброшено в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) в ITrustmarkService.StartRobotProcess () в TrustmarkServiceClient.StartRobotProcess ()

Есть идеи, что вызывает это?

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

Это пример конфигурации клиента WCF от MSDN :

 <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_ISampleService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" establishSecurityContext="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>

Вы должны установить receiveTimeout и sendtimout на соответствующее значение, вы можете увидеть похожую конфигурацию в файле конфигурации вашего теста.

0 голосов
/ 11 декабря 2010

Да.По умолчанию для службы WCF настроено время ожидания ответа в течение 1 минуты.Это означает, что клиенты могут подождать до минуты, и если они не получат ответ в это время, они могут предположить, что отказал / нет ответа.

В вашем случае вы используете службу WCF, используя точку останова для ответапо запросу клиента.А после ожидания в течение минуты клиент отключается и больше не ждет.

Вы можете увеличить это время ожидания из файла .config службы WCF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...