Получение IRequestReplyRouter не соответствует контракту на обслуживание или нет действительного контрактного метода? - PullRequest
4 голосов
/ 04 апреля 2011

enter image description here

Независимо от того, что я пытаюсь сделать, когда дело доходит до маршрутизации WCF, я постоянно получаю эту ошибку (через тестовый клиент WCF). Я не могу увидеть какие-либо методы в моем сервисе (ах)?

Сначала я просто предположил, что это мой код, поэтому я скачал почти все примеры, которые смог найти WCF + Routing, и просто запустил их как есть. Такая же ошибка происходит!

Я проверил журналы просмотра событий и т. Д., Чтобы увидеть, нет ли там ошибки? ничего такого. Я пробовал поискать и гуглить здесь других (так как, конечно, я не одинок) ничего.

Примечание:

  1. Я использую IIS7 с установленной AppFabric.
  2. Я использую .NET 4.0
  3. Я использую шаблон приложения службы WCF (по умолчанию в VS2010)
  4. Я схожу с ума по этому вопросу:)

В этот раз я абсолютно заблудился относительно того, что происходит?

Вот что возвращает тестовый клиент WCF -

enter image description here

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Служба маршрутизации WCF 4 не будет предоставлять метаданные вашей «фактической» службы, если вы не предоставите ее через отфильтрованную конечную точку или отдельный URL-адрес. Тестовый клиент wcf недостаточно умён, чтобы понять это во всяком случае.

То, что я хотел бы предложить, если вы хотите проверить свою функциональность маршрутизации, это использовать что-то вроде soapui. Затем вы можете использовать его для изменения адреса службы, на которую вы отправляете запрос.

Если вы хотите предоставить метаданные службы через маршрутизатор, эта статья должна помочь.

http://www.devproconnections.com/article/net-framework-402/Routing-Service-Metadata/

НТН

1 голос
/ 22 февраля 2012

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

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

Как только я изменил свой web.config, чтобы получить externalMetadataLocationАтрибут заполнил элемент serviceMetadata и указал его на мой статический WSDL, все было в порядке.

...