(Для MacOX 10.12.x) Возможно, вы хотите brew install libxml2
, а также попробуйте сначала связать с /usr/local/
: brew link --force libxml2
, а затем попробуйте gem install nokogiri -- --use-system-libraries
.
Я добавил следующий код в код приложения службы
system.transactions
defaultSettings timeout="00:30:00"
. С этим кодом служба будет ждать 30 минут, чтобы завершить процесс на сервере базы данных. и увеличьте
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
в атрибутах привязки клиента, тогда все будет работать нормально.
Проблема: Служба отправляет ответ, но размер буфера клиента был меньше, я увеличил размер буфера до максимального.
Тайм-аут называется "sendTimeout", и вы можете настроить его в разделе привязки в файле конфигурации или в коде - на ваш выбор.
config:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding sendTimeout="00:03:00" />
</netTcpBinding>
</bindings>
Это установит таймаут до 3 минут.
Marc
Будьте осторожны, это сообщение об ошибке представляет собой шаблонную строку, которую WCF отправляет, когда не знает, что произошло. На самом деле это означает «ммм, что-то пошло не так в цепочке, но я не совсем уверен, что именно, так что вот некоторые мелочи о конфигурации, делайте с ними все, что хотите».
В большинстве случаев, когда вы получаете это сообщение, оно не имеет ничего общего с фактическими таймаутами. Это могут быть квоты (количество объектов на графике, общий размер, длина массива) или что-то, что пошло не так на стороне сервера, между моментом, когда ваш метод службы вернул результат, и фактическими байтами, отправленными по сети. Итак, вам следует проверить настройки конфигурации (а не тайм-аут, кроме случаев, когда вам действительно пришлось подождать одну минуту, чтобы получить ошибку. Если вы получили ошибку сразу, это не имеет никакого отношения к тайм-аутам).
Если вы знаете, почему серверу требуется больше минуты, чтобы ответить клиенту, вам следует увеличить OperationTimeout канала (как указано в сообщении об ошибке).
Посмотрите на это, включая образец кода в конце: http://final-proj.blogspot.com/2009/09/wcf-timeouts.html
Удачи.
Вот гораздо более простое решение ... просто установите свойство непосредственно в текущей ClientBase. Другими словами, сначала добавьте ссылку на службу, инициализируйте ее, затем установите свойство «InnerChannel.OperationTimeout»
NetUtilsWCF.SMTPDiagClient sClient = new NetUtilsWCF.SMTPDiagClient ();
sClient.InnerChannel.OperationTimeout (0 , 5, 0);