WCF «Всегда генерировать контракты сообщений» не генерирует MessageContract - PullRequest
2 голосов
/ 16 сентября 2010

Я импортирую WSDL как определение службы (входящий в мою службу), и по какой-то причине клиент форматирует запрос так, что WCF не может десериализовать его без прокси-классов, имеющих декорации MessageContract.

Я заставил его работать таким образом, добавив атрибут MessageContract в основной класс контейнера, что хорошо, потому что WCF создает их как частичные классы, что означает, что я могу декорировать свою часть и оставить сгенерированныйчасть одна.Однако, чтобы правильно десериализовать свойства основного класса контейнера, я должен украсить их атрибутами MessageBodyMember, которые задают пространство имен.

Это, очевидно, Bad Thing®, поскольку это означает, что каждый разЯ восстанавливаю из WSDL, я собираюсь потерять способность получать сообщения от клиента.Я уже установил «Всегда генерировать контракты сообщений» в конфигурации ссылок на сервисы, но, похоже, это ложь - контракты сообщений не генерируются, независимо от того, оставляю ли я свой частичный класс с MessageContract или нет.

Можно ли как-нибудь заставить WCF генерировать эти MessageContract s?

EDIT

Я не уверен, уместно ли это, но когдаsvcutil генерирует прокси-класс, декорирует свойства с помощью

[XmlElement(Order=0)]
//Property definition

. И когда я добавляю атрибут MessageContract, сервис прерывается сообщением

Явное секвенирование может не использоватьсяна параметры или возвращаемые значения.Удалите свойство Order из пользовательских атрибутов.

Мне необходимо удалить все директивы Order из сгенерированных атрибутов XmlElement, прежде чем я смогу успешно вызвать службу.

1 Ответ

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

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

...