Служба Windows WCF TimeOut

(Для MacOX 10.12.x) Возможно, вы хотите brew install libxml2, а также попробуйте сначала связать с /usr/local/: brew link --force libxml2, а затем попробуйте gem install nokogiri -- --use-system-libraries.

16
задан tom redfern 11 May 2012 в 10:12
поделиться

5 ответов

Я добавил следующий код в код приложения службы

system.transactions  
    defaultSettings timeout="00:30:00" 

. С этим кодом служба будет ждать 30 минут, чтобы завершить процесс на сервере базы данных. и увеличьте

maxBufferSize="2147483647"  
maxReceivedMessageSize="2147483647"  
maxBufferPoolSize="2147483647" 

в атрибутах привязки клиента, тогда все будет работать нормально.

Проблема: Служба отправляет ответ, но размер буфера клиента был меньше, я увеличил размер буфера до максимального.

4
ответ дан 30 November 2019 в 15:06
поделиться

Тайм-аут называется "sendTimeout", и вы можете настроить его в разделе привязки в файле конфигурации или в коде - на ваш выбор.

config:

  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding sendTimeout="00:03:00" />
      </netTcpBinding>
    </bindings>

Это установит таймаут до 3 минут.

Marc

14
ответ дан 30 November 2019 в 15:06
поделиться

Будьте осторожны, это сообщение об ошибке представляет собой шаблонную строку, которую WCF отправляет, когда не знает, что произошло. На самом деле это означает «ммм, что-то пошло не так в цепочке, но я не совсем уверен, что именно, так что вот некоторые мелочи о конфигурации, делайте с ними все, что хотите».

В большинстве случаев, когда вы получаете это сообщение, оно не имеет ничего общего с фактическими таймаутами. Это могут быть квоты (количество объектов на графике, общий размер, длина массива) или что-то, что пошло не так на стороне сервера, между моментом, когда ваш метод службы вернул результат, и фактическими байтами, отправленными по сети. Итак, вам следует проверить настройки конфигурации (а не тайм-аут, кроме случаев, когда вам действительно пришлось подождать одну минуту, чтобы получить ошибку. Если вы получили ошибку сразу, это не имеет никакого отношения к тайм-аутам).

63
ответ дан 30 November 2019 в 15:06
поделиться

Если вы знаете, почему серверу требуется больше минуты, чтобы ответить клиенту, вам следует увеличить OperationTimeout канала (как указано в сообщении об ошибке).

Посмотрите на это, включая образец кода в конце: http://final-proj.blogspot.com/2009/09/wcf-timeouts.html

Удачи.

0
ответ дан 30 November 2019 в 15:06
поделиться

Вот гораздо более простое решение ... просто установите свойство непосредственно в текущей ClientBase. Другими словами, сначала добавьте ссылку на службу, инициализируйте ее, затем установите свойство «InnerChannel.OperationTimeout»

NetUtilsWCF.SMTPDiagClient sClient = new NetUtilsWCF.SMTPDiagClient ();

sClient.InnerChannel.OperationTimeout (0 , 5, 0);

0
ответ дан 30 November 2019 в 15:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: