У меня есть служба WF, которую я пытаюсь настроить для действий получения "Подписаться" и "Отписаться". Я использую Этот учебник по WF Durable Duplex в качестве основы, потому что мой сервис выполняет обратные вызовы для клиентов. По сути, думайте об этом как о службе чата.
Я могу делать клиентские звонки на два действия получения просто отлично. Что происходит, так это то, что адрес обратного вызова клиента передается в Subscribe () службы. Адрес хранится как переменная в сервисе WF, и все выглядит так, как будто оно будет работать, как и ожидалось.
Когда клиент вызывает Unsubscribe (), мои часы, которые я установил на адрес var во время отладки, показывают его как null
. Так что же дает?
Вот основные настройки моего макета сервиса WF ...
Все окутано действием DoWhile. Внутри этого действия Pick и две ветви Pick. Первая ветка предназначена для подписки на действия. Он имеет действие receive-sendreply, которое присваивает строку, переданную клиентом, адресу WF var. Вторая ветка обрабатывает отписку. Триггером является действие «Запрос», и снова передается адрес клиента.
Оттуда он входит в последовательность, начинающуюся с If. Он проверяет, равен ли unsubscribeAddress
уже подписанный address
. Если это так, тогда он устанавливает address
в String.Empty
и отправляет клиенту сообщение об успехе.
Почему переменная, относящаяся к охватывающей операции DoWhile, неявно присваивается нулю? Я пытаюсь заставить это работать, чтобы я мог реализовать несколько подписчиков клиентов оттуда и работать над триггерами, которые вызывают обратные вызовы для нескольких клиентов.
РЕДАКТИРОВАНИЕ CONCAT: Я установил точку останова на уровне DoWhile, и моя переменная равна нулю после вызова Unsubscribe()
. Когда вызывается Subscribe()
, часы показывают значение в переменной все время. Пока я Unsubscribe()
с клиентом. Должен ли я использовать Пока активность вместо