Время ожидания изменения для каждого метода или вызова WCF

У меня есть довольно большая "старая" служба WCF со многими различными методами.

большинство из этих методов являются "нормальными", поэтому они должны ответить менее чем за 10 секунд, но есть несколько методов (8 или 9), которые являются длинными процессами, поэтому они могут занять много времени, чтобы получить ответ.

receivetimeout и sendtimeout были установлены в 00:40:00, чтобы гарантировать, что у них было достаточно времени для выполнения этих процессов.

проблема в том, что иногда у нас есть проблемы с подключением и" нормальные " методы требуют очень много времени, чтобы потерпеть крах...

Они все находятся в одной службе, потому что они используют действительно большую модель, и они хотели повторно использовать модель из службы в каждом вызове (не имея PersonsService.Пользователь и RobotsService.Пользователь... потому что они одного класса в разных службах).

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

есть ли способ, чтобы установить другой тайм-аут в каждом вызове? Или методом обслуживания? Должен ли я в любом случае отказаться от обслуживания?

спасибо заранее!!

1 ответов


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

установить OperationTimeout на канале вы можете ввести case ваш экземпляр прокси / канала как IContextChannel и set OperationTimeout.

например:

IClientChannel contextChannel = channel as IClientChannel;
contextChannel.OperationTimeout = TimeSpan.FromMinutes(10);

HTH, Амит!--8-->