Один сервис WCF - два клиента; Один клиент не работает

У меня есть одна служба WCF и два клиента консольного приложения.

Сервис: Сервисный код создается из контакта wsdl с помощью инструмента WCSF Blue.

Клиент 1: Этот клиент использует wsdl, полученный при просмотре файла SVC. Этот просматриваемый файл wsdl немного отличается от файла контракта wsdl.

Клиент 2: Этот клиент создан с использованием исходного контракта wsdl.

Cleint1 работает нормально. Клиент 2 не работает. Какие все могут быть потенциальные проблемы?

Файл App.Config обоих клиентов выглядит одинаково - только имя меняется. Я думаю, проблема будет в сгенерированном коде клиента C # - скорее всего вдействие - ReplyAction, Что нужно исправить здесь?

Одно заметное отличие заключается в Action и ReplyAction

Клиент 1:

Действие =»Урна: Lijo: демос: multiplyservice: расчет: v1 / ICalculationService / GetMultiplied», ReplyAction = "urn: lijo: demos: multiplyservice: расчет: v1 / ICalculationService / GetMultipliedRe "+"sponse»

Клиент 2:

Действие =»Урна: Lijo: демос: multiplyservice: расчет: v1: getMultipliedIn», ReplyAction = "*"

Сообщение трассировки

Сообщение с действиемУрна: Lijo: демос: multiplyservice: расчет: v1: getMultipliedIn» не может быть обработано в получателе из-за несоответствия ContractFilter в EndpointDispatcher. Это может быть связано либо с несоответствием контракта (несоответствующие действия между отправителем и получателем), либо с несоответствием привязки / безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют одинаковый контракт и одну и ту же привязку (включая требования безопасности, например, Сообщение, Транспорт, Нет).

РЕДАКТИРОВАТЬ

Это можно исправить, изменив Action и ReplyAction, как показано ниже (Скопировано из Сервиса).

  [System.ServiceModel.OperationContractAttribute(Action = "urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/getMultiplied", ReplyAction = "urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/getMultipliedRe" +
        "sponse")]

Примечание. Важно убедиться, что регистр в службе корректен (т. Е. GetMultiplied не GetMultiplied).

Копирование из службы не является хорошим вариантом, хотя он работает. Какими будут правильные Action и ReplyAction?

Кроме того, не могли бы вы указать, какизмените wsdl так, чтобы ответное действие было правильным в сгенерированном клиентском прокси? Это важная часть, чтобы отметить это как ответ.

WCF: действия, звездочка и метаданные

WsdlExporter, который используется для публикации метаданных, игнорирует операции с действиями звездочки (как Action, так и ReplyAction).

ОтMSDN -ReplyAction Свойство

Указание звездочки в сервисе указывает WCF не добавлять ответное действие к сообщению, что полезно, если вы программируете сообщения напрямую.

РЕКОМЕНДАЦИИ:

WCF метаданные, пропущенные операции

RestaurantData.xsd

 
 

  
  
  
   
   

  

Оригинальный контракт wsdl

 

 
 
 
  
  













  
  
  





  
  
    
  
  
    
  
 
 
 
 
  
 
 
 

Ответы на вопрос(2)

Ваш ответ на вопрос