Последние два дня я искал в Интернете, но ни в коем случае не могу заставить свою службу дуплекса WCF работать. Я создал демонстрационный проект, который можно скачать с skydrive:
WCFDuplexDemo.zip
Чтобы свести к минимуму количество возможных причин ошибок, я решил просто вернуть короткую строку в обработчик обратного вызова, потому что тогда максимальный размер сообщения не будет превышен. Обычно моей службе WCF требуется некоторое время (+ 15 минут), чтобы рассчитать результат и затем вернуть его клиенту. Чтобы смоделировать это, я поместил исполняющий поток в slepp на 12 минут в DoWork ().
Исключение, которое я получаю, всегда упоминает о возможной проблеме с receiveTimeout
, которую следует увеличить, чтобы предотвратить проблему. Однако receiveTimeout
(и любой другой известный мне тайм-аут) установлен на три часа.
Еще одна вещь: я использую .NET Framework 3.5 SP1, и проблема также возникает при использовании WsDUalHttpBinding вместо netTcpBinding.