что-то кажется мне очень странным, я пытался заглянуть в WCF с помощью Reflector, но, простите, это слишком сложно понять: (.
Когда клиент A вызывает дуплексный сервис на сервере B с помощью wsDualHttpBinding, я думал, что клиент A включает базовый адрес клиента (адрес обратного вызова) в заголовок запроса, как этот
<a:ReplyTo>http://client.foo/29293-3287-2387-3291</a:ReplyTo>
.
Но
OperationContext.Current.IncomingMessageHeaders.ReplyTo
возвращает ноль ...
Как работает wsDualHttpBinding, чтобы узнать адрес клиентского канала ????
Есть какая-то черная магия или что-то?
Решение
Это надежный сеанс, который отвечает за передачу ответа на адрес. Мы можем проверить это с помощью этих обязательных элементов в customBinding
<reliableSession/>
<compositeDuplex/>
<oneWay></oneWay>
<textMessageEncoding></textMessageEncoding>
<httpTransport/>
Удалите надежный сеанс, и у вашего сервиса больше нет канала обратного вызова ...