Кажется, нет способа отписаться от push-уведомлений. Единственный вариант - выждать время.
Кнопка «Отменить подписку» в настоящее время ничего не делает, так как отмена подписки не реализована в управляемом API. В какой-то момент я реализую отмену подписки, хотя это не слишком важно, так как после закрытия прослушивателя подписка истечет через некоторое время, когда Exchange не получит ответ (или не сможет подключиться) к конечной точке прослушивателя.
Кстати, документация MSDN рекомендует использовать потоковую передачу, а не push-уведомления:
Если вы используете push-уведомления с Exchange 2010, подумайте об обновлении своего приложения для использования потоковых уведомлений, чтобы вам не требовалось отдельное приложение для получения событий.
Обновить
Нас также часто спрашивают, как работают тайм-ауты push-уведомлений. Допустим, ваш клиент подписался на push-уведомления, а потом неожиданно уходит в офлайн. Сервер не сможет отправить следующий набор событий в качестве уведомлений клиенту (или, что более важно, сервер не получит ответа на свое сообщение с уведомлением). Вместо того, чтобы сразу сдаться, сервер повторит попытку вытолкнуть их до трех раз. После первого сбоя сервер будет ждать тайм-аут (это тайм-аут, который вы установили в запросе на подписку) и повторите попытку. Если эта попытка не удалась, сервер подождет в два раза больше тайм-аута и попытается снова. Если это не удается, сервер подождет в три раза больше тайм-аута и повторит попытку. Наконец, если третья повторная попытка окажется неудачной, сервер сдастся и удалит подписку.
Обновление 2
Похоже, что за пределами управляемого API вы можете прекратить подписку, вернув Отменить подписку в элементе SubscriptionStatus вместо OK.
Таким образом, есть два способа завершить подписку на CAS:
- Вы можете отправить «Отписаться» в ответном сообщении (как ответ на уведомление от CAS).
- Вы можете перестать отвечать на уведомления.
Мы рекомендуем первый метод (отправка сообщения об отказе от подписки), а не второй метод, который заставляет сервер клиентского доступа выполнять ненужную работу.
MSDN: Статус подписки
Пример кода (с SubscriptionStatus.OK, поэтому для получения желаемого эффекта необходимо установить для него значение «Отписаться»): Exchange Web Services .NET › Учебное пособие › Push-уведомление о событии
person
diegog
schedule
10.02.2014