HTTP-запрос на *.svc превысил выделенный тайм-аут. Время, отведенное для этой операции, возможно, было частью более длительного таймаута.

Я разрабатываю приложение Silverlight с использованием WCF.

Проблема заключается в том, что иногда она выдает исключение:

"HTTP-запрос на" http://localhost: 1276/Foo.svc "превысил выделенный тайм-аут. Время, отведенное для этой операции, возможно, было частью более длительного таймаута".

Итак, как увеличить время? Некоторые из них предложили использовать время приема, как показано ниже, в веб-конфигурации и в файле конфигурации service.client

 <bindings>
      <customBinding >
        <binding  name="customBinding0" receiveTimeout="02:00:00" >
          <binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647" maxSessionSize="2147483647" />


          <httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Buffered"/>

        </binding>
      </customBinding>      
    </bindings>

Каким будет максимальное значение для свойства receiveTimeout?

Ответы

Ответ 1

Я предполагаю, что проблема заключается не в том, что ваш ReceiveTimeout превышает максимальное значение для этого параметра, так как MaxValue TimeSpan составляет более 10 миллионов дней. Вместо этого, я думаю, что настройки просто не вступили в силу.

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

На сервере (в вашем web.config)

<binding name="customBinding0" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00">

На клиенте (в вашем ServiceReferences.ClientConfig)

<binding name="CustomBinding_DesignOnDemandService" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00">

Ответ 2

HTTP-запрос превысил установленный тайм-аут. Время, отведенное для этой операции, возможно, было частью более длительного таймаута.

Три места для установки значений времени для устранения этой проблемы...

  • Web.Config

    <httpRuntime executionTimeout="600" />
    

    (это секунды, поэтому вот его 10мин). Подробнее о httpRuntime здесь.

  • В ваших связующих элементах Web.Config

    <binding name="customBinding123"     receiveTimeout="00:10:00"     sendTimeout="00:10:00"     openTimeout="00:10:00"     closeTimeout="00:10:00" />
    
  • На ваших элементах привязки ServerReferences.ClientConfig в system.serviceModel

    <binding name="CustomBinding"     receiveTimeout="00:10:00"     sendTimeout="00:10:00"     openTimeout="00:10:00"     closeTimeout="00:10:00" />
    

Ответ 3

Несколько дней назад мы получили то же сообщение об ошибке. Я нашел этот поток, но прежде чем мы начали увеличивать разные свойства таймаута, мы проверили антивирусное программное обеспечение клиентской машины: это был NOD. Новый NOD (и, возможно, другие AV) имеет возможность фильтрации/блокировки портов. Мы отключили блокировку портов 80/443, и клиент подключился без какого-либо сообщения об ошибке таймаута.