Почему WCF автоматически не влияет на заголовок Кому на исходящем сообщении с Ответить на входящее сообщение?
У меня есть служба, которая отправляет сообщение с заголовком ReplyTo, установленным на обратный адрес. Я думал так:
OperationContext.Current.GetCallbackChannel<IHelloCallback>().RespondHello("tomi");
автоматически вызовет мой клиент, но я получу это исключение:
Для отправки сообщения по составным дуплексным каналам на стороне сервера в сообщении должно быть установлено свойство "Через" или заголовок "Кому".
Я делаю что-то не так или WCF немного ленив?
В настоящее время я использую поведение с инспектором сообщений, чтобы эти заголовки совпадали, но это выглядит немного странно...
PS: я использую MSMQ
Обновить
Я создал два элемента привязки, чтобы сделать работу msmq over duplex доступной в codeplex. Вы можете увидеть весь пример, но, как я уже сказал, из-за этой ошибки я использую поведение с инспектором сообщений, чтобы установить для заголовка To исходящего сообщения значение Ответить на входящее сообщение. Что странно, так это то, что моему клиенту не нужно такое поведение, и он также может перезвонить в мою службу.
2 ответа
Вы создали свою собственную привязку для MSMQ, чтобы включить двустороннюю связь? wsDualHttpBinding - единственная готовая привязка WCF для поддержки дуплексной связи и, следовательно, механизма CallbackContract.
Если вы сделали - можете ли вы опубликовать конфигурацию привязки?
Марк
Эта ошибка может возникнуть, если у вас не включен надежный сеанс.
РЕДАКТИРОВАТЬ:
Вот ссылка на того, кому, по-видимому, удалось использовать транспорт MSMQ в качестве дуплексного транспорта:
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2006/10/26/8937.aspx
Надеюсь, поможет