Получение контракта требует ошибки TwoWay (запрос-ответ или дуплекс)

У меня подписчик WCF для MSMQ, который установлен как служба Windows. Я также подключил IErrorhandler. Так что мне нужно было сделать его OneWay= false в контракте на обслуживание. Теперь, когда я запускаю службу Windows, я получаю следующее сообщение об ошибке:-

Служба не может быть запущена. System.InvalidOperationException: для контракта требуется TwoWay (запрос-ответ или дуплекс), но Binding 'MsmqIntegrationBinding' не поддерживает его или не настроен для его поддержки. в System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(материал StuffPerListenUriInfo, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, логическая поддержка ContextSession, IChannelListener& result)

Я новичок в WCF.. пожалуйста, помогите мне. Как настроить MsmqIntegrationBinding для дуплекса.

Мой раздел app.config находится ниже:-

 <msmqIntegrationBinding>
    <binding name="OrderProcessorBinding" maxRetryCycles="0" receiveErrorHandling="Move"
      receiveRetryCount="3" retryCycleDelay="00:00:59">
      <security mode="None" />
    </binding>
  </msmqIntegrationBinding>

1 ответ

Тот факт, что вы используете очереди, означает, что концептуально ваш клиент и сервер отключены. Если вы хотите сообщить об исключениях клиенту, вы можете повторно посетить свою архитектуру, чтобы убедиться, что вы действительно хотите использовать очереди.

В этом вопросе о переполнении стека обсуждаются варианты, доступные для работы с исключениями, если вы решите пойти по маршруту MSMQ: как обработать ошибку сообщения в привязках MSMQ для WCF

Существуют расширенные обходные пути для поведения типа запрос-ответ в MSMQ, один из которых приведен в превосходной "Книге программирования WCF-сервисов" Лоуи.

Другие вопросы по тегам