Несовпадение ContractFilter в исключении EndpointDispatcher - PullRequest
104 голосов
/ 30 марта 2011

У меня есть следующий сценарий, который я пытаюсь проверить:

  1. Общий WSDL
  2. Конечная точка WCF, реализующая объекты на основе WSDL и размещенная в IIS.
  3. Клиентское приложение, использующее прокси на основе WSDL для создания запросов.

Когда я выполняю вызов веб-службы от клиента к конечной точке службы, я получаю следующее исключение:

{"Сообщение с действием" http://IMyService/CreateContainer' не может быть обработано в получателе из-за несоответствия ContractFilter в EndpointDispatcher. Это может быть связано либо с несоответствием контракта (несоответствующие действия между отправителем и получателем), либо с несоответствием привязки / безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют один и тот же контракт и одну и ту же привязку (включая требования безопасности, например, Сообщение, Транспорт, Нет). "}

Я начал использовать MS Service Trace Viewer, но не уверен, где искать. При взгляде на классы в клиенте и конечной точке они выглядят одинаково.

Как начать отлаживать эту проблему?

Каковы некоторые возможные причины этого исключения?

Ответы [ 26 ]

0 голосов
/ 14 января 2014

Эта ошибка обычно возникает, если код развернут неправильно.

В моем случае у меня есть две службы ServiceA и ServiceB.Я обнаружил проблему в том, что файлы ServiceB были развернуты неправильноИз-за этого, когда ServiceA вызывал ServiceB изнутри, он выдавал ошибку ниже.

**Error**

Пожалуйста, убедитесь, что файлы и ссылки развернуты правильно.

0 голосов
/ 16 ноября 2016

У меня была эта ошибка, потому что у меня есть старая версия DLL в GAC моего сервера. Поэтому убедитесь, что все ссылки указаны правильно, и что сборка / GAC обновлены с использованием хорошего dll.

0 голосов
/ 12 апреля 2017

У меня была эта проблема на моем тестовом сервере, потому что я запускал две копии одного и того же wcf в одном и том же пуле приложений.Для меня было решено создать отдельные пулы для каждой версии на моем wcf и перезапустить IIS после этого.

0 голосов
/ 22 мая 2014

У меня тоже была эта проблема. Оказалось, что это было вызвано контрактом сериализатора на стороне сервера. Он не мог вернуть мой объект контракта данных , потому что некоторые из его камер данных имели свойства только для чтения .

Убедитесь, что ваши объекты имеют сеттеры для свойств, предназначенных для сериализации.

0 голосов
/ 11 мая 2018

Для тех, кто использует NodeJS с axios для выполнения запросов SOAP, вы должны включить SOAPAction header. Проверьте пример ниже:

axios.post('https://wscredhomosocinalparceria.facilinformatica.com.br/WCF/Soap/Emprestimo.svc?wsdl',
           xmls,
  {headers:
  {
    'Content-Type': 'text/xml',
    SOAPAction: 'http://schemas.facilinformatica.com.br/Facil.Credito.WsCred/IEmprestimo/CalcularPrevisaoDeParcelas'}
  }).then(res => {
    console.log(res)
  }).catch(err => {
    console.log(err.response.data)
  })
0 голосов
/ 26 июля 2014

Как ни странно, мы обошли эту ошибку, используя тот же корпус, что и используемые имена Path и OperationContract.Очевидно это было чувствительно к регистру.Если кто-то знает почему, пожалуйста, прокомментируйте.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...