Я не получаю исключение тайм-аута при вызове моего метода обслуживания из клиента.
TL; DR: , поскольку по умолчанию тайм-ауты WCF одна минута , поэтому, естественно, что работа сервера, которая занимает всего 10 секунд, не будет зависеть от времени ожидания.Тайм-ауты, которые вы указали на сервере, будут влиять только на передачу, а не на выполнение вашего метода.(вы больше ничего не звоните)
Вы указываете таймауты в конфигурации server . необходимо *1016* указать тайм-ауты в файле конфигурации клиента, в частности SendTimeout .По сути, независимо от того, что делает вызов, необходимо указать время ожидания операции.Возможно, это не относится к вашему случаю, но если ваш «сервер», в свою очередь, сделал еще один вызов WCF для другой службы, вам также понадобится ваш собственный тайм-аут.
MSDN:
SendTimeout - используется для инициализации OperationTimeout
, который управляет всем процессом отправки сообщения, включая получение ответного сообщения для операции службы запроса / ответа.Этот тайм-аут также применяется при отправке ответных сообщений методом контракта обратного вызова.
Обычно конфигурации клиента и сервера WCF должны совпадать, и если вы не используете Добавить ссылку на службу / Обновить ссылку на службу каждый раз, когда сервер сжимается и / или изменяется конфигурация, клиент не узнает об этом.Кстати, избегайте последнего, потому что он дублирует вашу модель и может привести к ошибкам во время выполнения, если они не синхронизированы.Не говоря уже о контрактах на обслуживание, которые могут быть не синхронизированы.
Мимолетная мысль
И это поднимает одну из проблем конфигурации WCF через файлы конфигурации, они подвержены ошибкам во время выполнения, которые невозможно найти.во время компиляции.
Лучше всего полностью отказаться от конфигурационных файлов и выполнить программную настройку с помощью общей сборки, которую используют и ваш клиент, и сервер.Укажите привязки в коде вместе с вашими тайм-аутами.
Таким образом, и сервер, и клиент всегда синхронизируются в отношении конфигурации WCF.
Поскольку согласование тайм-аутов и клиента, и сервера решило бы некоторые проблемы.
Расскажите подробнее