Проблемы с дуплексом WCF при утилизации IIS AppPool - PullRequest
2 голосов
/ 22 сентября 2010

У меня в IIS настроен дуплексный Http-сервис WCF Silverlight (3). Он прекрасно работает, пока я не перезапущу ApplicationPool в IIS.

Подключенные клиенты SL, которые затем вызывают методы этой дуплексной службы, затем начинают получать TimeoutExceptions / CommunicationExceptions из веб-службы. Увеличение таймаутов на стороне клиента не помогает.

Рециркуляция, по-видимому, не уничтожает базовое (дуплексное) http-соединение между сервером и клиентом. Когда клиент затем вызывает метод в этой службе, IIS не может правильно его обработать.

Если я воссоздаю прокси на клиенте, все снова работает нормально. Проблема, однако, как я узнаю, что мне нужно восстановить соединение с сервером? не Все примеры в Интернете показывают, как обращаться с отключенными клиентами, а не с тем, что вы делаете в случае повторного использования веб-службы. Полностью перезапустить IIS можно, так как в этом случае соединение http закрывается.

Любой вклад приветствуется.

1 Ответ

1 голос
/ 23 сентября 2010

Ожидаемое поведение.Вот как работает дуплексный http.Дуплексная HTTP-связь использует надежный сеанс.Это означает, что все работает хорошо, пока одна из сторон не закрыта.Если AppPool перерабатывается, запущенные экземпляры службы завершаются.В следующий раз, когда клиент пытается связаться со службой, он не может связаться с ним (экземпляр уже не существует), но из-за надежного сеанса он пробует его несколько раз, а затем выбрасывает таймаут.Единственное решение после тайм-аута - прервать текущий прокси, создать новый клиентский прокси и начать новый дуплексный обмен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...